Как добавить ссылку на скрипт, специфичную для страницы (MVC с использованием главных страниц) - PullRequest
0 голосов
/ 22 декабря 2010

Я немного запутался с включением тегов Master Pages и Script. У меня есть несколько файлов сценариев (* .js), которые я хочу включить, но не все файлы имеют отношение к каждой странице. Я использую главную страницу, и кажется, что я могу сделать это только на главной странице.

Но я вижу это как пустую трата времени и думаю, что мне нужно включить все файлы JS в главную страницу. Это означает, что я буду загружать файлы JS, не используя их на всех страницах.

Есть ли лучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Сначала добавьте ContentPlaceHolder на своей главной странице:

<head runat="server">
  <title>My awesome master page</title>
  <script type="text/javascript" src="global.js"></script>
  <asp:ContentPlaceHolder ID="foo" runat="server" />
</head>

Добавьте дополнительные скрипты со своей страницы через ContentPlaceHolder

<asp:Content ContentPlaceHolderID="foo" runat="server">
    <script src="specific.js" type="text/javascript"></script>
</asp:Content>
1 голос
/ 22 декабря 2010
  1. Вы можете добавить некоторые свойства в ViewModel, чтобы пометить, какие js-файлы вам нужны.
  2. В процессе работы я бы предложил объединить все ваши js-файлы в один и использовать js minifier. Это уменьшит количество обращений к серверу за статическими ресурсами.

Если размер вашего js-файла невелик, я бы предложил использовать второй вариант.

Есть еще один вариант, но он более сложный. Вы можете создать расширение http, которое будет свободно загружать ваши js-файлы и объединять их в соответствии с потребностями страницы и выдвигать их непосредственно в ответ.

0 голосов
/ 13 мая 2011

Другой способ, который может быть более подходящим для предложенного tkalve, сделать это программно ...

HtmlLink jsLink = new HtmlLink();
jsLink.Href = "~/scripttoload.js";
jsLink.Attributes.Add("type", "text/javascript");
Header.Controls.Add(jsLink);

однако заголовок страницы (главная страница) должен быть объявлен как runat = "server«чтобы иметь возможность сделать это.Ознакомьтесь с http://odetocode.com/code/450.aspx, в котором очень полезно обсудить все виды проблем с мастер-страницами, включая несколько способов решения этой проблемы.

...