2011-09-20 37 views
1

我的意图是通过创建一个EditorTemplate按照这个帖子ASP.NET MVC 2 Templates可空日期时间,EditorTemplates,JQ 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> 
} 

相关的代码工作完美地描述了jQuery UI日期选择器适用于我的整个网站;但是,除了多个DateTime字段,模型还包含1个可为空的DateTime字段并导航到页面结果中的此错误:

传递到字典中的模型项目为null,但此字典需要非null模型项目类型'System.DateTime'。

事实上,即使在路径Views/Shared/EditorTemplates中创建一个名为“DateTime”的空白部分也足以产生错误,这表明即使模板被重写,仍然可能无法处理空值。在索引视图(通过EF代码优先通过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?

回答

3

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

@model DateTime? 

@{...} 

这应该解决它。