2010-06-08 4 views
0

저는 마스터 페이지를 사용하여 ASP.Net 응용 프로그램을 작성하는 데있어서 새로운 반기를 들고 있습니다. 하지만 해결할 수없는 것 같습니다.마스터 페이지를 사용하는 페이지 또는 마스터 페이지를 사용하는 페이지에서 "Object Expected Error"가 발생했습니다.

<asp:Content ContentPlaceHolderID="cphHead" runat="server"> 
    <script type="text/javascript" language="javascript" >  

     function test() { 
      alert("Hello World"); 
     } 
</script> 
</asp:Content> 

<asp:Content ContentPlaceHolderID="cphMainContent" runat="server"> 
    <fieldset>   
     <img alt="Select As Of Date" src="Images/Calendar.png" id="aAsOfDate" class="clickable" runat="server" onclick="test();" />    
     <asp:Button runat="server" CssClass="buttonStyle" ID="btnSubmit" Text="Submit" OnClick="btnSubmit_Clicked"/>    
    </fieldset> 
</asp:Content> 

다음 포함 된 I 다음이 마스터 페이지를 사용하는 페이지가

<head runat="server"> 
    <title>Test Site</title> 
    <link rel="Stylesheet" type="text/css" href="Default.css" /> 
    <script type="text/javascript" language="javascript" src="js/Default.js" /> 
    <meta http-equiv="Expires" content="0"/> 
    <meta http-equiv="Cache-Control" content="no-cache"/> 
    <meta http-equiv="Pragma" content="no-cache"/>   
    <asp:ContentPlaceHolder ID="cphHead" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server">  

     <div id="divHeader"> 
     <asp:ContentPlaceHolder ID="cphPageTitle" runat="server"></asp:ContentPlaceHolder> 
     </div> 

     <div id="divMainContent"> 
     <asp:ContentPlaceHolder ID="cphMainContent" runat="server"></asp:ContentPlaceHolder> 
     </div> 
    </div> 
    </form> 
</body> 

:

내 상황은 내가 같이 보이는 구조로 마스터 페이지를 가지고있다 이 페이지를 실행하고 이미지를 클릭하면 "Object Expected" 오류가 발생합니다.

그러나 테스트 기능을 내 Default.js 외부 파일에 배치하면 완벽하게 작동합니다.

왜 이런 일이 발생하는지 알 수 없습니다. 어떤 아이디어?

답변

2

편집 : 스크립트가 실제로로드되어 있는지 (fiddler2.com/fiddler2) 피들러 같은 HTTP 분석기를 사용하여

보십시오. 문제는 아마도 aspx 페이지의 상대 경로가로드중인 스크립트에 대해 올바르지 않은 것일 수 있습니다. 경로는 항상 마스터 페이지의 위치가 아니라 실행중인 aspx에 상대적입니다. 스크립트가로드되지 않으면 test() 함수가 존재하지 않으므로 오류가 발생합니다.

확인 경로가

<script type="text/javascript" language="javascript" src='<%= Page.ResolveClientUrl("~/js/Default.js") %>' ></ script>

대신이 시점에서

<script type="text/javascript" language="javascript" src="js/Default.js" /> 
+0

나는 다른 모든 테스트 목적으로 주석이 항상 정확한지 확인하기 위해 헤더에이보십시오. 원래 필자는 사용하고있는 캘린더 컨트롤에 대해 참조 된 4 개의 추가 외부 js 파일을 가지고있었습니다. 다른 흥미로운 점은이 페이지가 마스터 페이지를 믹스에 추가 할 때까지 완벽하게 작동한다는 것입니다. 일단 내가이 오류가 발생하기 시작했다. 또한 VS 개발 서버를 사용하여이 문제를 테스트 할 예정입니다. – Philter

+0

마스터 페이지 또는 실제 콘텐츠 페이지에서 참조하는 외부 js 파일이 있으면 js Object Expected 오류가 표시됩니다. 외부 스크립트를 모두 주석 처리하면 임베디드 스크립트가 제대로 작동합니다. – Philter

+0

코드를 보지 않고도 말하기 힘들지만 테스트를 거친 파일 중 하나에 일부 완료되지 않은 개체가 있다고 의심되어 전역으로 등록되지 않습니다. Default.js를 두 번이나 alert ('empty script') 같은 좋은 문장 만있는 다른 테스트 스크립트를 포함시켜 보았습니다. ? 통과하면 스크립트를 한 번에 하나씩 추가하십시오. 실패하면 Jint 라이브러리를 사용하여 추적하십시오. http://www.ehow.com/how_4791439_code-javascript-lint-visual-studio.html – Laramie

관련 문제