programing

__o가 선언되지 않은 경우 어떻게 제거합니까?

linuxpc 2023. 8. 9. 20:32
반응형

__o가 선언되지 않은 경우 어떻게 제거합니까?

내 마스터 페이지에 상황에 따라 중요한 정보가 포함된 하이퍼링크를 설정하는 코드가 있습니다.

<%If Not IsNothing(Profile.ClientID) Then%>
<span class="menu-nav"> 
<a  target="_blank" 
    href=
"http://b/x.aspx?ClientID=<%=Profile.ClientID.ToString()%>&Initials=<%=Session("Initials")%>"       
    >
    Send
    <br />
    SMS
    <br />
</a>

</span>
<%End If %>

<span class="menu-nav"> <!-- Name __o is not declared Error is flagged here-->

이제 그 문제는 href 부분에 있는 것 같습니다.동적 코드를 제거하면 오류가 사라집니다.이 문제를 해결하는 방법을 알려줄 수 있는 사람이 있습니까?

.net 포럼에서 을 찾았습니다.ASP의 이유를 잘 설명하고 있습니다.Net은 그대로 작동합니다.

우리는 마침내 신뢰할 수 있는 평판을 얻었고 근본적인 문제를 확인했습니다.사소한 비난은 다음과 같습니다.

  <% if (true) { %>
  <%=1%>
  <% } %>
  <%=2%>   

설계 시 <%=%> 블록에 지능을 제공하기 위해 ASP.NET은 임시 __o 변수 및 언어(VB 또는 C#)에 대한 할당을 생성한 다음 변수에 대한 인텔리전스 라이센스를 제공합니다.이는 페이지 컴파일러가 첫 번째 <%=... %> 블록을 볼 때 수행됩니다.그러나 여기서 블록은 if 내부에 있으므로 if가 닫힌 후 변수는 범위를 벗어납니다.우리는 결국 다음과 같은 것을 생성하게 됩니다.

   if (true) { 
        object @__o;
        @__o = 1;
   }
   @__o = 2;

해결 방법은 페이지 초반에 더미 식을 추가하는 것입니다.예: <%=" " %>이렇게 하면 아무것도 렌더링되지 않으며 잠재적인 'if'(또는 다른 범위 지정) 문 앞에 __o가 렌더 메서드에서 최상위 수준으로 선언됩니다.

다른 해결책은 단순히 사용하는 것입니다.

<% response.write(var) %>

대신에

<%= var %>

예, ASPX 페이지의 서버 사이드 구성을 사용하는 페이지에서 가끔 같은 버그를 경험했습니다.

시간이 지남에 따라, 저는 그것에 대한 해결책을 찾았습니다. (죄송합니다. 제가 어디서 이 정보를 다시 찾았는지 알 수 없었습니다.) 그리고 그 해결책은 다음 코드를 오류 위에 놓는 것입니다.<%...%>슬라이드:

<%-- For other devs: Do not remove below line. --%>
<%="" %>
<%-- For other devs: Do not remove above line. --%>

분명히, 위의 코드를 어디에 두었는지가 VS에 모든 차이를 만듭니다.NET, 그래서 제대로 하려면 몇 번의 시도가 필요할 수 있습니다.

이것은 이상한 해결책이지만 Visual Studio에서 문제가 되는 열려 있는 파일을 닫기만 하면 이 문제를 해결할 수 있었습니다.

그것들이 열려 있는 상태에서, 저는 __o 문제를 불규칙하게 받고 있었습니다.

제가 그것들을 닫자마자 __o 문제가 사라졌습니다.

현재 프로젝트에서 몇 시간 동안 검색하고 여러 aspx를 분석한 결과 해결책을 찾은 것 같습니다. 그것이 저에게 효과가 있습니다.html 스타일의 코멘트는 피하는 것이 좋습니다.

<!-- ... -->

asx 페이지 안에 있습니다.대신 xx 스타일 주석으로 사용

<%-- ... --%>

또한 vs. 인텔리센스와 코드 강조가 다시 작동하고 주로 - 이 사건은 거기서 시작되었지만 - vs. 이제 vb/cs 코드의 내장된 부분 안에 있는 중단점을 맞출 수 있다는 것을 얻는 데 도움이 되었습니다!그리고 "여기는 중단점에 적합한 위치가 아닙니다."라는 메시지도 없습니다.

솔루션을 정리하고 IIS를 다시 시작한 후에도 여전히 수수께끼처럼 재생되고 있는 경우, ASPX 소스 파일의 내용을 다른 시스템에서 Visual Studio로 붙여넣어 코드를 "도움이 되는" 업데이트함으로써 일부 ID를 변경하고 페이지를 손상시킬 수 있습니다.

다른 편집기(Notepad++?)에 붙여넣은 다음 저장하면 Visual Studio가 "도움이 되지 않음"을 멈추고 페이지가 다시 작동합니다.

언급URL : https://stackoverflow.com/questions/750902/how-do-i-get-rid-of-o-is-not-declared

반응형