1

私の意図は、この投稿ASP.NET MVC 2 テンプレートに従って 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' 型の null 以外のモデル アイテムが必要です。

実際、パス Views/Shared/EditorTemplates に「DateTime」という名前の空のパーシャルを作成するだけでもエラーが生成され、テンプレートが書き直されたとしても null 値を処理できない可能性があることが示唆されます。インデックス ビューのコード (EF Code-First を介して MvcScaffolding によって生成される) は、null 許容および null 非許容の 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>

では、null 許容の DateTime を処理するようにテンプレートを変更することは可能ですか?

4

2 に答える 2

3

値型で null にできない DateTime のモデルを指定しました。それがエラーメッセージが伝えていることです。モデルを null 許容の DateTime に変更してみてください。

@model DateTime?

@{...}

それはそれを修正する必要があります。

于 2011-09-20T18:40:17.673 に答える