2010-04-18 5 views
6

ASP.NET 4 웹 응용 프로그램을 개발 중입니다. 나는 웹 양식에 Menu 컨트롤을 넣을 때, 메뉴가 바로 닫는 </form> 태그 앞에 생성하기 위해 다음 코드를 발생합니다메뉴 컨트롤 생성 js가 Web Forms에서 Sys의 정의되지 않은 예외를 발생시킵니다.

<script type='text/javascript'> 
     new Sys.WebForms.Menu({ element: 'NavigationMenu', disappearAfter: 500, 
       orientation: 'horizontal', tabIndex: 0, disabled: false }); 

을만큼 내가 URL 재 작성을 사용하지 않는 한, 페이지가 컴파일하고 제대로로드 . 웹 사이트에서 URL 다시 쓰기를 사용하려고하면 Visual Studio에서 "Sys is undefined"JavaScript 예외가 throw되기 시작합니다.

그러나 항상 그런 것은 아닙니다. 가장 자주 발생하는 것은 CSS 파일에서 일시적인 위치 관련성을 변경할 때 발생하지만 때로는 예외가 임의적으로 보이는 경우가 있습니다.

어떻게이 문제를 해결할 수 있습니까?

+0

사용자가 링크가없는 메뉴 항목을 클릭했을 때 예외가 발생했습니다. 아래 내 수정을 참조하십시오. –

답변

5
RouteTable.Routes.Ignore("{resource}.axd"); 
5

메뉴 목록을 사용하여 컨트롤을 렌더링하는 경우에도 메뉴의 RenderingMode 특성을 "Table"로 설정하면이 문제가 해결됩니다.

<asp:Menu ID="mnuStuff" runat="server" RenderingMode="Table"> 
    ... 
</asp:Menu> 

당신은 ASP의 4.0 새로운 CSS 개선 사항을 활용할 필요가없는 경우 당신의 Web.config에 다음과 같은 설정으로 모두 그 new Sys.WebForms.Menu의 주입을 사용하지 않도록 설정할 수 있습니다.

이렇게하면 asp가 페이지의 맨 아래에 삽입하는 인라인 javascript 렌더링이 제거됩니다.

0

나는 문제는 오래 알고 있지만, 이것은 일부는 영혼을 부어 도움이 될 수 있습니다 ... ;-)

내가 페이지 JQuery와 관련 스크립트의 끝에서 이동하여이 문제를 해결할 수 있었다. 이유를 조사하는 데 많은 시간을 투자하지는 않았지만 javascript 리소스 파일 (WebResource/*. axd)과 jquery (이 글을 쓰는 시점의 1.10) 사이에 명확하게 자바 스크립트 이름 지정 충돌이있는 것 같습니다.

관련 문제