空日期时间,编辑模板,JQ UI日期picker



我的意图是通过创建一个EditorTemplate来应用JQuery UI Datepicker到我的整个网站。. NET MVC 2模板

@model DateTime
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "-");
<div class="editor-label">
    @Html.LabelFor(model => model)
</div>
<div class="editor-field, datepicker">
    @Html.EditorFor(model => model)
    @Html.ValidationMessageFor(model => model)
</div>
} 

相关代码按照描述完美地工作;然而,除了几个DateTime字段之外,Model还包含1个可为空的DateTime字段,并且导航到页面会导致以下错误:

传入字典的模型项为null,但是这个字典需要一个类型为'System.DateTime'的非空模型项。

事实上,即使在路径Views/Shared/EditorTemplates中创建一个名为"DateTime"的空部分也足以产生错误,这表明即使模板被重写,它仍然可能无法处理空值。索引视图中的代码(通过MvcScaffolding通过EF code - first生成)对于可空和非可空的DateTime字段都是相同的:

    <div class="editor-label">
        @Html.LabelFor(model => model.ItemInstance.iArrivalDate)
    </div>
    <div class="editor-field,datepicker">
        @Html.EditorFor(model => model.ItemInstance.iArrivalDate)
        @Html.ValidationMessageFor(model => model.ItemInstance.iArrivalDate)
    </div>

那么是否可以修改模板来处理可为空的DateTime?

指定了DateTime的模型,该模型是一个值类型,不能为空。这就是错误信息告诉你的。试着把你的模型改成一个可空的DateTime。

@model DateTime?
@{...}

Phil是对的(null模型)我有一个关于这个的完整教程http://www.asp.net/mvc/tutorials/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-1

最新更新