3

これに似たモデルのセットがあります

public class OtherModel 
{
    [Required]
    string name { get; set; }
}

public class OthersEditModel 
{
    List<OtherModel> others { get; set; }
}

次に、次のようなコントローラーメソッドがあります

[HttpPost]
public ActionResult EditOthers(OthersEditModel others)
{
    if(ModelState.IsValid)
    {
         // Save
    }
}

私の問題はModelState.IsValid、リスト内のオブジェクトの検証をトリガーしていないことです。

どうすればこれを達成できますか、それとも可能ですか?

または、リスト内の要素の検証を手動でトリガーできますか?

4

2 に答える 2

1

したがって、問題は検証プロパティではないことがわかりました。ベースに何もしなくても、完全にピックアップしOthersEditModelます。動的な JavaScript フォーム生成を壊していたので、フォーム フィールドが間違った名前で返されていました。

ちなみに、このhttp://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspxは、MVC 3 の優れた拡張機能です。

于 2012-01-31T14:36:10.357 に答える
0
[HttpPost]
public ActionResult EditOthers(OthersEditModel others)
{
    if(ModelState.IsValid)
    {
         foreach (var item in others.others)
        {
            if(!TryValidateModel(item))
                //Not valid
        }
    }
}
于 2012-01-31T11:50:51.713 に答える