模型级验证

时间:2010-01-31 06:20:45

标签: c# asp.net-mvc validation data-annotations

如何完成Brad Wilson的帖子中所述的“模型级”验证:

  

最后,如果您希望验证可以访问多个属性,那么将其作为模型级验证(以便它将整个模型作为模型参数,而不是单个属性值)。

来自http://forums.asp.net/p/1457591/3650720.aspx

我尝试了以下

[MyCustomValidation("SomeStuff")]
public class MyClass
{
     // properties
}

IsValid替换MyCustomValidation中的断点不会触发任何内容,代码只会继续。 MyCustomValidation构造函数中的断点有效,但之后没有。

这不是model-level validation所指的那个吗?

UPDATE:

dirtygopher指向http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html的链接显示模型验证,唯一的问题是验证属性放在父类的子属性上。

我正在寻找一种方法将validation-attributes直接放在课堂上,正如我在上面的例子中所展示的那样。

3 个答案:

答案 0 :(得分:2)

在最新的asp.net mv 2附带的RegisterModel中有一个很好的例子。

查看“PropertiesMustMatch”属性及其用法。

答案 1 :(得分:0)

这是Brad Wilson博客中的好帖子 http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html. 我希望它能帮助您理解模型级验证概念。

答案 2 :(得分:0)

如果你正在使用MVC3,这是这个问题的另一个答案。此示例创建一个属性,该属性可以附加到单个属性,并通过传递属性名称和对象值使其依赖于另一个属性。

结果更加优雅,因为该属性附加到实际验证的对象。

http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx