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 回答