EditorTemplates フォルダーと次の DateTime.cshtml を使用して、すべての Datetime フィールドに日付ピッカー (jQuery UI) を追加しています。
@model Nullable<System.DateTime>
@if ( Model.HasValue ) {
@Html.TextBox( "" , String.Format( "{0:yyyy-MM-dd HH:mm}" , Model.Value ) , new { @class = "textbox" , @style = "width:400px;" } )
}
else {
@Html.TextBox( "" , String.Format( "{0:yyyy-MM-dd HH:mm}" , DateTime.Now ) , new { @class = "textbox" , @style = "width:400px;" } )
}
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace( ".", "_" );
}
<script type="text/javascript">
$(document).ready(function () {
alert("adding date picker");
$("#@id").datepicker
({
dateFormat: 'dd/mm/yy',
showStatus: true,
showWeeks: true,
highlightWeek: true,
numberOfMonths: 1,
showAnim: "scale",
showOptions: {
origin: ["top", "left"]
}
});
});
</script>
ただし、ページの下部に jQuery スクリプトなどを追加すると、提案されているように、現在のベスト プラクティスです。上記のコードは、jQuery スクリプトの上にインラインで表示されるため、実行されません。
メインの CSHTML Razor ビュー:
@RenderBody()
<hr>
<footer>
<p>© Company @System.DateTime.Now.ToString("yyyy")</p>
</footer>
</div>
@Scripts.Render("~/js")
@Scripts.Render("~/jqueryui")
@RenderSection("Scripts", required: false)
</body>
ベスト プラクティスをバイパスして jQuery スクリプトをページの上部に追加する必要がありますか? または、ベスト プラクティスに従いながら、これを機能させる簡単な方法はありますか?
ありがとうございました、
マーク