我的意图是通过根据这篇文章ASP.NET MVC 2 Templates创建 EditorTemplate 将 JQuery UI Datepicker 应用到我的整个站点
@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 字段之外,模型还包含 1 个可为空的 DateTime 字段,并且导航到页面会导致此错误:
传入字典的模型项为空,但此字典需要“System.DateTime”类型的非空模型项。
事实上,即使在路径 Views/Shared/EditorTemplates 中创建一个名为“DateTime”的空部分也足以产生错误,这表明即使重写了模板,它仍可能无法处理空值。索引视图中的代码(通过 EF Code-First 通过 MvcScaffolding 生成)对于可空和不可空的 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?