我的意图是通过按照这篇文章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/

10-12 00:36
查看更多