0

メインモデル内のモデルのリストを検証/送信する方法を理解するのに苦労しています。例えば:

コントローラ:

[HttpPost]
public ActionResult submitData(MyModel model){
   ...submit data...
}

モデル:

public class MyModel{
    [Required]
    public string Title{get;set;}
    ...
    [Required]
    IList<SubModel> SubModels{getset;}
}
public class SubModel{
    [Required]
    public string Title {get;set;}
}

意見:

@using(Html.BeginForm("submitData", "Home", FormMethod.Post){
   @Html.TextBoxFor(x=>x.Title);
   ... Code for submodels
}

サブモデルは、JavaScriptで設定したオンザフライで追加できるはずですが、サブモデルは、ユーザーが追加したい数に応じて任意の量にする必要があります。サブモデルの検証が機能し、投稿を送信すると、すべてがモデルにうまく収まるようにするにはどうすればよいですか。

4

1 に答える 1

0

入力フィールドに名前を付けるときは、非シーケンシャルインデックスを使用することをお勧めします。Steven Sandersonは、excellent articleこのテーマについて、それを達成する方法の段階的な例を示しています。カスタムHtml.BeginCollectionItemヘルパーを使用して、Guidを使用してコレクションプロパティの入力フィールドの適切な名前を生成naming conventionし、デフォルトのモデルバインダーで使用されるものを尊重します。

Steven Sandersonはまたanother article、新しいアイテムを追加するためにAJAX呼び出しに依存せずに、純粋なクライアント側のテンプレートを使用して同じことを実現する方法を示しています。

ただし、何をする場合でも、フォームを送信した後、デフォルトのモデルバインダーでビューモデルのコレクションプロパティを適切にバインドできるようにする場合は、命名規則を尊重する必要があることに注意してください。

于 2013-03-06T21:54:50.717 に答える