Встраиваемый Javascript в мастер-страницу или страницы, использующие мастер-страницу, выдает «Ошибка объекта» - PullRequest
0 голосов
/ 09 июня 2010

Я наполовину новичок в написании приложений 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, она будет работать отлично.

Я не могу понять, почему это происходит. Есть идеи?

1 Ответ

2 голосов
/ 09 июня 2010

РЕДАКТИРОВАТЬ:

Попробуйте использовать http-анализатор, такой как fiddler (fiddler2.com/fiddler2), чтобы увидеть, действительно ли загружается скрипт.Возможно, проблема в том, что относительный путь страницы 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...