1

我的意图是通过根据这篇文章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 字段,并且导航到页面会导致此错误:

传入字典的模型项为空,但此字典需要“System.DateTime”类型的非空模型项。

事实上,即使在路径 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?

4

2 回答 2

3

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

@model DateTime?

@{...}

那应该解决它。

于 2011-09-20T18:40:17.673 回答
1

菲尔是对的(空模型)我有一个关于这个http://www.asp.net/mvc/tutorials/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-的完整教程mvc-part-1

于 2011-10-06T19:15:23.630 回答