我有一个已经从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包含列表,则错误。
那么,验证列表并将模型错误添加到模型状态的最佳方法是什么?
答案 0 :(得分:2)
在检查ModelState.IsValid
之前,您可以添加代码以逐步完成并验证每个Thing
,如下所示:
foreach (var thing in Things)
TryValidateModel(thing);
这将验证每个项目,并将任何错误添加到ModelState。
答案 1 :(得分:0)
您可以编写自定义验证器属性并使用它来装饰list属性吗?这将允许您编写自定义逻辑以从列表中获取元素并验证它们。