C#模型验证 - 验证应用程序块或数据注释?

时间:2010-01-05 16:37:01

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

我想在我的域模型中添加验证器属性(在ASP.NET MVC应用程序中),我正在尝试在2个框架之间,验证应用程序块和DataAnnotations之间做出决定。他们似乎做了类似的任务,所以我想选择将来最受支持/使用的任务。似乎DataAnnotations更新(并且在3.5 SP1中构建到框架中),那么人们是否认为验证应用程序块将过时?

[标记为社区维基,因为这是主观的]

3 个答案:

答案 0 :(得分:7)

我一直在问这个问题,最近决定使用企业库。我已经能够使用Unity Framework和amp;验证块属性&验证我的课程和方法没什么问题。这两个框架都包含在EntLib中。

就持续支持而言,下一版企业库目前处于Beta 2(EntLib 5.0),目标是4月中旬发布。您可以在此处访问当前的测试版http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta2

此外,在阅读第5版的更改日志后,我注意到他们也支持DataAnnotations。

  

“支持.NET框架   System.ComponentModel.DataAnnotations   数据注释属性已经存在   添加到块和验证器   可以在任何你想使用的地方使用   数据注释属性。更多   信息请参阅使用数据注释   包含的CHM文件中的属性。“

http://entlib.codeplex.com/wikipage?title=EntLib5Beta2ChangeLog&referringTitle=EntLib5%20Beta2#lab


因此,看起来企业库将继续得到支持。

答案 1 :(得分:3)

MVC2将支持多个验证框架。引用伟大的Scott Guthrie“ASP.NET MVC 2的验证功能旨在使插入任何类型的验证体系结构变得容易”。

由于DataAnnotations使用基于属性的方法,验证应用程序块不会过时,因为它还支持基于配置的方法和多个规则集的验证,这在许多情况下都很有用。您可以预期VAB的未来版本将内置支持MVC 2.

更新:在最新版本的验证应用程序块版本5中,VAB的验证属性继承自DataAnnotations的基本验证属性。这意味着VAB现在直接在DataAnnotations之上构建,并且可以处理DataAnnotations的应用程序也可以处理VAB定义的属性。

答案 2 :(得分:2)

MVC 2和Asp.net 4.0 DynamicData都支持DataAnnotations。我会说验证应用程序块将过时。