ASP.Net MVC 3 DataAnnotations验证List <t> </t>

时间:2011-08-24 08:21:38

标签: asp.net-mvc-3 data-annotations generic-list

我有一个已经从JSON反序列化的ViewModel,它看起来像这样:

public class UserThingsUpdateViewModel
{
    public IList<Thing> Things { get; set; }
    [Required]
    public int UserId { get; set; }
    public int Age { get; set; }
}

Thing也是一个ViewModel,它在属性上也有各种DataAnnotaion ValidationAttribute属性。

问题是列表似乎没有得到验证,即使经过搜索,我似乎找不到任何解决这个问题的文章。大多数人认为,如果ViewModel包含列表,则错误。

那么,验证列表并将模型错误添加到模型状态的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

在检查ModelState.IsValid之前,您可以添加代码以逐步完成并验证每个Thing,如下所示:

foreach (var thing in Things)
    TryValidateModel(thing);

这将验证每个项目,并将任何错误添加到ModelState。

答案 1 :(得分:0)

您可以编写自定义验证器属性并使用它来装饰list属性吗?这将允许您编写自定义逻辑以从列表中获取元素并验证它们。