2011-09-20 34 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? 

@{...} 

這應該解決它。