Предпочтительный способ включить относительную ссылку на JavaScript во вложенной главной странице VS 2008 - PullRequest
8 голосов
/ 08 октября 2008

На нашей базовой мастер-странице есть что-то вроде

  <head runat="server">
   <title></title>

   <script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/actions.js")%>"></script>
   <script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/jquery/jquery-1.2.6.min.js")%>"></script>
   <asp:contentplaceholder id="cph_htmlhead" runat="server">

   </asp:contentplaceholder>
  </head>

Если эта мастер-страница является мастер-страницей для страницы ASPX, все работает нормально.

Если эта мастер-страница является мастер-страницей для дочерней мастер-страницы, а затем новая страница ASPX использует дочернюю мастер-страницу в качестве своей мастер-страницы, мы видим:

Ошибка сервера в приложении.

Коллекция элементов управления не может быть изменена, поскольку элемент управления содержит блоки кода (т. Е. <% ...%>).

Каков предпочтительный способ включения глобальных ресурсов (Javascript / CSS) в базовую мастер-страницу с сохранением относительного пути в стиле тильды (~)?

Ответы [ 3 ]

10 голосов
/ 09 октября 2008

Использование серверного элемента управления ScriptManager:

  <asp:ScriptManager ID="myScriptManager" runat="server">
    <Scripts>
      <asp:ScriptReference Path = "~/javascript/actions.js" /> 
      <asp:ScriptReference Path = "~/javascript/jquery/jquery-1.2.6.min.js" />
    </Scripts>
  </asp:ScriptManager>
5 голосов
/ 08 октября 2008

Вы пробовали:

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>
4 голосов
/ 08 октября 2008

Согласно ScottGu ,

Одним из советов, которым можно воспользоваться, является поддержка исправления относительного пути, предоставляемая элементом управления head runat = "server". Вы можете использовать это на главных страницах, чтобы легко ссылаться на таблицу стилей .CSS, которая используется повторно во всем проекте (независимо от того, является ли проект корневым или вложенным приложением):

Функция исправления пути в элементе управления head затем берет относительный путь таблицы стилей .CSS и корректно выводит абсолютный путь к таблице стилей во время выполнения, независимо от того, является ли это веб-сайтом с корневой ссылкой или частью дочернего элемента. приложение.

...