IValidatableObject并不总是触发
这里有一个可能不明显的问题。如果存在属性级错误,ASP.NET MVC 3中的IValidatableObject将不会触发。正如我所提到的,ASP.NET MVC 3属性验证发生在对象验证之前。如果存在属性错误,ASP.NET MVC 3的设计将不会触发IValidatableObject,以免返回误报(感谢Microsoft的Brad Wilson今天确认这一点)。
为了实用性,我想在对象的一个集合中获取所有验证消息。
是否有一种简单的方法可以在不破解MVC源的情况下覆盖此默认行为?
我目前正在尝试在控制器中填充ValidationContext
对象,并在以下的else块中调用object.Validate()
:
if (TryModelUpdate(model))
P.S。如果这是重复的道歉,我在SO上找不到类似的东西。