Nullable DateTime,EditorTemplates,JQ UI DatePicker

时间:2011-09-20 04:23:43

标签: jquery datetime nullable editortemplates

我的目的是通过根据这篇文章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吗?

2 个答案:

答案 0 :(得分:3)

您指定了DateTime模型,该模型是值类型,不能为null。这就是错误消息告诉你的内容。尝试将模型更改为可以为空的DateTime。

@model DateTime?

@{...}

那应该解决它。

答案 1 :(得分:1)