我的目的是通过按照这篇文章 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 字段,导航到该页面会导致以下错误:
传入字典的模型项为 null,但此字典需要类型为“System.DateTime”的非空模型项。
事实上,即使在路径 Views/Shared/EditorTemplates 中创建一个名为“DateTime”的空部分也足以生成错误,这表明即使模板被重写,它可能仍然无法处理空值。对于可空和不可空的 DateTime 字段,索引 View 中的代码(通过 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 - 可空日期时间、编辑器模板、JQUERY UI DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480123/