Как я правильно регистрирую блоки JavaScript в шаблоне ASP.NET MVC 2 (RTM) Editor?
Определенный сценарий, в котором я нахожусь, - то, что я хочу использовать Dynarch JSCal2 DateTimePicker для своего стандартного средства выбора даты и времени, но этот вопрос в целом к любому допускающему повторное использование пакету JavaScript. У меня есть свой шаблон, работающий правильно теперь, но он имеет мой JS, и CSS включает в мою основную страницу, и я довольно только включал бы эти вещи, если мне на самом деле нужны они:
Так, очевидно, я мог просто поместить эти строки в свой шаблон, но затем если у меня есть экран, который имеет 5 DateTimePickers, затем это содержание было бы дублировано 5 раз, который не будет идеален. Так или иначе я все еще хочу, чтобы Шаблон моего Представления инициировал этот код, помещаемый в из моей страницы.
В то время как это абсолютно не связано с моим выяснением у этого вопроса, я думал, что совместно использую свой шаблон на здесь (до сих пор) в случае, если это полезно всегда:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBoxFor(model => Model) %>
" value="..." />
Я обычно добавляю заполнитель сценария на моей главной странице, который заменяется представлениями:
Мастер:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<asp:ContentPlaceHolder ID="Styles" runat="server" />
</head>
<body>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
<script type="text/javascript" src="scriptAvailableToAllPages.js"></script>
<asp:ContentPlaceHolder ID="Scripts" runat="server" />
</body>
</html>
Представление:
<%@ Page Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Ns.MyModel>" %>
<asp:Content ID="indexScripts" ContentPlaceHolderID="Scripts" runat="server">
<script type="text/javascript" src="specific.js"></script>
</asp:Content>
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(x => x.Date1) %>
<%= Html.EditorFor(x => x.Date2) %>
<%= Html.EditorFor(x => x.Date3) %>
<input type="submit" value="OK" />
<% } %>
</asp:Content>
Обратите внимание, что шаблон редактора включен для трех различных свойств модели, но для требуемых сценариев включаются только один раз.
Я создаю простой скрипт Manage, чтобы справиться с этим, к сожалению, я не сделал этого для проверки CSS Asp.Net MVC Manager для включения javascript и файлов Css . К сожалению, он не работает должным образом для CSS, для javascript я просто поместил их в конце моего мастер-файла, но CSS должен быть в теге head, я еще не нашел способа сделать это ...
Но, используя это, я смог создать сценарий в пользовательском HtmlHelper, DatePicker, который я использую с шаблоном DateTime.ascx.
Менеджер telerik web asset manager позволяет достичь желаемого и имеет открытый исходный код.