Как правильно зарегистрировать блоки javascript в шаблоне редактора ASP.NET MVC 2 (RTM)?
Конкретный сценарий, в котором я нахожусь, заключается в том, что я хочу использовать Dynarch JSCal2 DateTimePicker для моего стандартного средства выбора даты и времени, но этот вопрос в целом относится к любому повторно используемому пакету javascript. Теперь мой шаблон работает нормально, но в моей главной странице есть JS и CSS, и я предпочел бы включить эти вещи, только если они мне действительно нужны:
<link rel="stylesheet" type="text/css" href="../../Content/JSCal2-1.7/jscal2.css" />
<link rel="stylesheet" type="text/css" href="../../Content/JSCal2-1.7/border-radius.css" />
<script type="text/javascript" src="../../Scripts/JSCal2-1.7/jscal2.js"></script>
<script type="text/javascript" src="../../Scripts/JSCal2-1.7/lang/en.js"></script>
Так что, очевидно, я мог бы просто вставить эти строки в свой шаблон, но если бы у меня был экран с 5 DateTimePickers, то этот контент дублировался бы 5 раз, что было бы не идеально. В любом случае, я все еще хочу, чтобы шаблон моего представления запускал этот код в <head>
моей страницы.
Хотя это совершенно не связано с тем, как я задавал этот вопрос, я решил поделиться своим шаблоном здесь (пока), если он пригодится каким-либо образом:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBoxFor(model => Model) %>
<input type="button" id="<%= ViewData.TemplateInfo.GetFullHtmlFieldId("cal-trigger") %>" value="..." />
<script type="text/javascript">
var <%= ViewData.TemplateInfo.GetFullHtmlFieldId("cal") %> = Calendar.setup({
trigger : "<%= ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty) %>",
inputField : "<%= ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty) %>",
onSelect : function() { this.hide(); },
showTime : 12,
selectionType : Calendar.SEL_SINGLE,
dateFormat : '%o/%e/%Y %l:%M %P'
});
</script>