我的目的是通过根据这篇文章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字段之外,Model还包含1个可为空的DateTime字段,导航到该页面会导致此错误:
传入字典的模型项为null,但此字典需要“System.DateTime”类型的非null模型项。
实际上,即使在路径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吗?
答案 0 :(得分:3)
您指定了DateTime模型,该模型是值类型,不能为null。这就是错误消息告诉你的内容。尝试将模型更改为可以为空的DateTime。
@model DateTime?
@{...}
那应该解决它。
答案 1 :(得分:1)