18

EditorFor()と組み合わせて使用​​したいEnumDropDownFor()ヘルパーを作成しました。EditorFor()を使い始めたばかりなので、テンプレートの選択方法について少し混乱しています。

私のEnum.cshtmlエディターテンプレートは以下のとおりです。

<div class="editor-label">
    @Html.LabelFor(m => m)
</div>
<div class="editor-field">     
    @Html.EnumDropDownListFor(m => m)
    @Html.ValidationMessageFor(m => m)
</div>

使用するテンプレートを明示的に定義する以外に、列挙型がEditorFor()に渡されるたびに使用されるデフォルトのテンプレートを使用する方法はありますか?

4

1 に答える 1

25

ASP.NETMVCで使用される既定のテンプレートに関するBradWilsonのブログ投稿を確認できます。列挙型のモデルプロパティがある場合、レンダリングされるのは文字列テンプレートです。したがって、この文字列エディタテンプレートを次のようにカスタマイズできます。

~/Views/Shared/EditorTemplates/String.cshtml

@model object
@if (Model is Enum)
{
    <div class="editor-label">
        @Html.LabelFor(m => m)
    </div>
    <div class="editor-field">     
        @Html.EnumDropDownListFor(m => m)
        @Html.ValidationMessageFor(m => m)
    </div>
}
else
{
    @Html.TextBox(
        "",
        ViewData.TemplateInfo.FormattedModelValue,
        new { @class = "text-box single-line" }
    )
}

そして、あなたの見解では、単純に:

@Html.EditorFor(x => x.SomeEnumProperty)
于 2011-04-16T08:30:58.303 に答える