4

私の MVC4 プロジェクトには、製品ビュー モデルのコレクションを持つカテゴリ ビュー モデルがあります。エディター テンプレートを使用して単一の製品ビュー モデルをレンダリングし、製品ビュー モデルのコレクションをそれに渡します。

カテゴリ ビュー モデル:

@model CategoryViewModel
@using MVC4PartialViews.Models.ViewModels

<div class="editor-field">
    @Html.EditorFor(model => model.CategoryName)
    @Html.ValidationMessageFor(model => model.CategoryName)
</div>

@Html.EditorFor(x => x.Products)

コレクション内の各製品をレンダリングするエディター テンプレート:

<div class="editor-field">
    @Html.EditorFor(model => model.ProductName)
    @Html.ValidationMessageFor(model => model.ProductName)
</div>
// etc.

これは、要素に自動的に名前を付けて正しくインデックス付けするため、非常にうまく機能し、すべての製品が親のカテゴリビューモデルの一部としてポストバックされます-出力は次のとおりです。

<div class="editor-field">
    <input class="text-box single-line" id="Products_0__ProductName" name="Products[0].ProductName" type="text" value="Add 1st product for this Category" />
    <span class="field-validation-valid" data-valmsg-for="Products[0].ProductName" data-valmsg-replace="true"></span> 
</div>

ユーザーが製品を追加および削除できるようにする必要があります。新しいものを追加するには、エディター テンプレートを動的にレンダリングして新しい製品を作成し、各フィールドに正しくインデックス付け/名前を付ける必要があります。つまり、既に 2 つの製品 (インデックス 0 と 1) がある場合、新しい製品にはそのような:

Products[2].ProductName

Steve Sanderson によるこの記事を読みましたが、それは不格好に思えます。彼は連続したインデックス フィールドではなく、Guid を使用してフィールドにインデックスを付けています。

MVC2 での可変長リストの編集

ティア

4

2 に答える 2

0

Jarrett Meyer のブログ投稿、Nested Collection Models in MVC3 で概説されているソリューションを確認してください。SOに関するこの回答
に 要約されています。

于 2014-05-06T13:28:29.803 に答える
0

ここで答えるのに遅くはありませんが、

あなたが提供するリンクが私にとって役立つものを探しています。IEnumerableこれで、モデルのプロパティでアイテムの追加/削除を使用して、アップロード ファイルの入力を動的に追加する方法がわかりましたEditorFor

あなたのソリューションではUIHint、テンプレートはあなたがやりたいことを何でもできると思います。foreachテンプレート内で、のフォーマットを指定できますid

于 2012-10-21T20:25:58.647 に答える