1

次のようなエディターテンプレートがありますが、class、maxlength、size属性がソースに到達していません。

@using System.Globalization
@model DateTime?
@Html.TextBox("", (Model != null && Model.HasValue && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("1900") && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("0001") ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), new { @class = "datePicker", maxlength = "12", size = "12" })

以下に変更しましたが、今でも同じです

@Html.EditorFor(x => x.Criteria.FromDate, new { @class = "datePicker", maxlength = "12", size = "12" })

ソース

<input class="text-box single-line" id="Criteria_FromDate" name="Criteria.FromDate" type="text" value="" />

どうすればこれを修正できますか?

4

1 に答える 1

1

Editorテンプレートの名前がDateTime(Views / Shared / EditorTemplatesフォルダーに配置されている)であり、モデル(Criteria.FormDate)がEditorTemplateモデル(DateTime? )と同じタイプであることを確認してください。

すべてのDateTimeフィールドの最大長とサイズが同じである場合は、EditorTemplateにハードコードしておくことができます。HTMLの例:

@EditorFor(x => x.Criteria.FormDate) //no need to pass html attributes object if they are not used in the editor template

@EditorFor(model, "EditorTemplateName")--渡されたモデルにそのTemplateEditorが必要であることを明示的に言うことは価値があります。これは、同じモデルタイプに対して複数のエディターがある場合に当てはまるため、それらを明示的に呼び出します(部分ビューを呼び出してモデルを渡すように機能します)。

編集: テンプレートを見た後、Criteria.FormDateはnull許容ではないようです。テンプレートのコードを改善/リファクタリングすることを検討する必要があります。

于 2012-08-21T10:17:32.637 に答える