0

マスターページを使用してASP.Netアプリケーションを作成するのは初めてで、しばらく時間をかけて問題が発生しましたが、解決できないようです。

私の状況では、次のような構造のマスターページがあります。

<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>

次に、このマスターページを使用するページがあります。このページには次のものが含まれています。

<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>

このページを実行して画像をクリックすると、"Object Expected"エラーが発生します。

ただし、テスト関数をDefault.js外部ファイルに配置すると、完全に機能します。

なぜこれが起こっているのか理解できないようです。何か案は?

4

1 に答える 1

2

編集:

fiddler (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" />
于 2010-06-08T22:16:45.467 に答える