我的意图是通过按照这篇文章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个可为null的DateTime字段,并且导航到页面会导致此错误:
传递到字典中的模型项为null,但是此字典需要类型为'System.DateTime'的非空模型项。
实际上,即使在路径Views / Shared / EditorTemplates中创建一个名为“ DateTime”的空部分也足以产生错误,这表明即使重写了模板,它仍可能无法处理空值。对于可空和不可空DateTime字段,索引视图中的代码(通过EF Code-First通过MvcScaffolding生成)是相同的:
<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模型是一种值类型,不能为null。这就是错误消息告诉您的内容。尝试将模型更改为可为空的DateTime。
@model DateTime?
@{...}
那应该解决它。
关于jquery - 可空的DateTime,EditorTemplates,JQ UI DatePicker,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7480123/