1

我了解使用基本要求和最小长度注释类属性,并获得 asp.net mvc 服务器端和客户端验证的所有好处。

但是,有没有人有一个链接显示您如何将此“基础”验证与更复杂的业务规则结合起来。我将如何运行业务规则功能,例如,客户是否在去年订购了任何东西(需要数据库命中)并且仍然使用相同的 DataAnnotation 和 mvc 验证管道?

目标:不想要两种生成和输出验证方法的方式。

4

4 回答 4

4

来自http://msdn.microsoft.com/en-us/library/dd901590%28VS.95%29.aspx

要创建自定义验证检查,您可以创建一个派生自 ValidationAttribute 类的类,也可以创建一个执行验证检查的方法,并在将 CustomValidationAttribute 应用于数据成员时引用该方法。当您创建派生自 ValidationAttribute 的类时,重写 IsValid 方法以为您的自定义验证检查提供逻辑。

那里似乎有示例代码。

于 2009-10-08T07:44:47.910 回答
3

数据注释在您的操作被调用之前运行。然后,无论验证是否成功,仍会调用该操作。如果 DA 检测到无效数据,您的 ModelState 将无效。

到达这里后,您仍然可以对您的业务规则进行任何您想要的验证,就像您通常在没有数据注释的情况下所做的那样,如果您愿意的话。在您的操作中,即使数据注释验证通过,您也可以向 ModelState 添加错误。在这种情况下,您使用 ModelState.addError 添加错误,这些错误将添加到 DA 提供的任何错误中。因此,在您的视图中,错误来自何处并不重要。

或者,如果您的规则是通用的,您可以编写自己的注释标签。Data Annotation 是随其源一起分发的,因此您可以完全控制它。

于 2009-10-08T07:38:36.637 回答
1

您可以使用 Microsoft Enterprise Library 5 中的 VAB(应用程序验证块),它实际上基于 DataAnnotations 类,但您可以通过配置非常轻松地完成复杂的业务逻辑......我建议你检查一下......

于 2011-03-14T12:47:47.680 回答
1

看看下面的文章,你可以在同一个字段上多次使用 DataAnnotations,比较 N 个属性和 N 个值....

http://www.codeproject.com/KB/validation/MultipleDataAnnotations.aspx

于 2011-08-01T14:10:20.933 回答