2008-10-08 9 views
8

Нашей базы Masterpage имеет что-то вроде следующегоПредпочтительный способ включить относительную ссылку на JavaScript в VS 2008 вложенного Masterpage

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

Если Masterpage является в Masterpage для страницы ASPX вещей работают нормально.

Если Masterpage является Masterpage для ребенка Masterpage, а затем новой страницы ASPX использует ребенок Masterpage, как это MasterPage мы видим: Ошибку

сервера в 'Application.

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

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

ответ

10

Используйте серверный элемент управления 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> 
4

В соответствии с ScottGu,

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

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

5

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

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script> 
+0

Мы в настоящее время используют толченый (#) включают в себя с помощью вызова привязка() на головной элемент в базовый мастер-код позади. Но я ищу что-то конкретное/передовое. – 2008-10-08 18:46:58

+1

замените <% # на <% = – 2010-06-23 16:09:47