如何在 ASP.NET MVC 2 (RTM) 编辑器模板中正确注册 javascript 块?
我所处的具体场景是我想使用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>