14

この質問を投稿する前に、EditorForModelパラメーターの使用についてグーグル検索しました。

Html.EditorForModel() を使用しない理由とこのブログを読みました。

私のニーズに関連する記事は見つかりませんでした。

EditorForModelパラメータ付きの呼び出しの例を教えてください。

4

1 に答える 1

33

このヘルパーには6 つのオーバーロードがあります。

  1. @Html.EditorForModel()

    ビューモデルの正確なタイプ名である~/Views/Shared/EditorTemplates/TypeName.cshtmlテンプレートをレンダリングします。TypeNameビュー モデルがコレクション (つまりIEnumerable<TypeName>、、、 ...) のIList<TypeName>場合TypeName[]、ASP.NET MVC は、コレクションの各要素に対応するエディター テンプレートを自動的にレンダリングします。そのために、ビューにループを記述する必要はありません。フレームワークによって処理されます。

  2. @Html.EditorForModel("templatename")

    ~/Views/Shared/EditorTemplates/templatename.cshtml慣例に頼らずにレンダリングする

  3. @Html.EditorForModel(new { Foo = "bar" })

    デフォルトのエディター テンプレートをレンダリングしますが、追加のビュー データを渡しますViewData["foo"]ViewBag.Foo

  4. @Html.EditorForModel("templatename", new { Foo = "bar" })

    規則に依存する代わりにレンダリング~/Views/Shared/EditorTemplates/templatename.cshtmlし、追加のビュー データをそれに渡しますViewData["foo"]ViewBag.Foo

  5. @Html.EditorForModel("templatename", "fieldprefix")

    規則に依存する代わりにレンダリング~/Views/Shared/EditorTemplates/templatename.cshtmlし、このテンプレート内のナビゲーション コンテキストを変更します。つまり、たとえば、@Html.TextBoxFor(x => x.FooBar)このテンプレート内で呼び出しがあった場合、name="fieldprefix.FooBar"代わりにname="FooBar"

  6. @Html.EditorForModel("templatename", "fieldprefix", new { Foo = "bar" })

    規則に依存する代わりにレンダリング~/Views/Shared/EditorTemplates/templatename.cshtmlし、このテンプレート内のナビゲーション コンテキストを変更します。つまり、たとえば、@Html.TextBoxFor(x => x.FooBar)このテンプレート内で呼び出しがあった場合、name="fieldprefix.FooBar"代わりにname="FooBar". ViewData["foo"]また、内部でまたはで使用できる追加のビューデータを渡しますViewBag.Foo

注意: テンプレート システムは最初~/Views/XXX/EditorTemplatesに XXX がこのビューを提供したコントローラーの名前であるテンプレートを探し、見つからない場合は を調べます~/Views/Shared/EditorTemplates。これにより、テンプレートをより細かく調整できるようになります。コントローラーごとにオーバーライドできる共有フォルダーにデフォルトのテンプレートを含めることができます。

于 2013-02-26T15:35:18.487 に答える