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

C#模型验证-验证应用程序块或数据注释?,c#,asp.net-mvc,data-annotations,validation-application-bl,C#,Asp.net Mvc,Data Annotations,Validation Application Bl,我想将验证器属性添加到我的域模型中(在ASP.NET MVC应用程序中),我正试图在两个框架之间做出选择:验证应用程序块和数据注释。它们似乎执行类似的任务,因此我想选择一个在未来最受支持/使用的任务。看起来DataAnnotation比较新(从3.5SP1开始就内置在框架中),所以人们认为验证应用程序块会过时吗 [标记为社区Wiki,因为这是主观的]MVC 2和Asp.net 4.0 DynamicData都支持数据注释。我认为验证应用程序块将过时。MVC2将支持多个验证框架。引用伟大的“ASP

我想将验证器属性添加到我的域模型中(在ASP.NET MVC应用程序中),我正试图在两个框架之间做出选择:验证应用程序块和数据注释。它们似乎执行类似的任务,因此我想选择一个在未来最受支持/使用的任务。看起来DataAnnotation比较新(从3.5SP1开始就内置在框架中),所以人们认为验证应用程序块会过时吗


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

MVC 2和Asp.net 4.0 DynamicData都支持数据注释。我认为验证应用程序块将过时。

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

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


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

我也一直在问这个问题,最近决定使用Enterprise Library。我已经能够使用Unity框架和验证块的组合来对我的类和方法进行属性和验证,而且没有什么麻烦。这两个框架都包含在EntLib中

就持续支持而言,企业库的下一个版本目前是Beta 2(EntLib 5.0),目标是4月中旬发布。您可以在此处访问当前的测试版

另外,在阅读了版本5的更改日志之后,我注意到它们还包括对DataAnnotation的支持

“对.NET framework的支持 System.ComponentModel.DataAnnotations 数据注释属性已被删除 添加到块和验证器 可以用在任何你想用的地方 数据批注属性。有关详细信息,请参阅 有关信息,请参见使用数据注释 包含的CHM文件中的属性。“


所以,看起来企业库将继续受到支持