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>
したがって、明らかにこれらの行をテンプレートに入れることもできますが、DateTimePickersが5つある画面がある場合、このコンテンツは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>