ASP.NET MVC:使用Enterprise Library验证程序块进行验证对象

来源:互联网 发布:红米note3知乎 编辑:程序博客网 时间:2024/06/04 23:23

原文链接:http://weblogs.asp.net/gunnarpeipman/archive/2009/11/13/asp-net-mvc-validating-objects-using-enterprise-library-validation-application-block.aspx

在应用程序中数据的验证是一个重要的话题。在进行数据验证的时候有许多令你满意的验证框架。目前我使用Enterprise Library 4.1中的验证程序块并且我把它集成到ASP.NET MVC应用中。在这个案例中我会展示如何在ASP.NET MVC中使用验证程序块。

简介
很快,你可以为你的ASP.NET MVC视图创建和初始化对象。我想你知道知道这个功能,请先知道它的基本工作原理。
下面是我的应用程序如何分层。

目前,所有外部的东西,是被基础层引用。基础层提供了依赖注入和验证的共同接口。当实现改变时这些接口也不会改变。表示层使用基础实现。
添加验证
我需要将Enterprise Library 4.1下载并安装到我的开发机器上。如果你想测试我的解决方案,你也可以创建一个ASP.NET MVC网站应用项目并且将所有东西添加进来。所有东西都没问题。在安装Enterprise Library后你需要添加一些引用让你的程序能使用验证程序块。找到这三个文件:
Microsoft.Practices.EnterpriseLibrary.Common.dll
Microsoft.Practices.EnterpriseLibrary.Validation.dll
Microsoft.Practices.EnterpriseLibrary.Validation.Configuration.Design.dll
这个库就足够了。将这些引用添加到基础库当中。
接下来我们需要为我们的验证功能添加一个虚构的测试。我创建了三个类:

  • ValidationError – 代表一个验证错误,并包含无效的属性名称和验证消息属性。
  • ValidationException – 异常的类型,它包含一系列的验证错误(它也可以检测验证代码中造成的错误)。
  • Validator – 这个类只有一个方法叫做验证<T>的,它使所有操作像正常运行一样。


让我们看看现在这些类。
ValidationError

 

ValidationException

Validator

现在我们正在接近完成,现在添加一些规则。
添加验证规则
请确保在你的应用程序中有web.config文件,我们将要修改这个文件。从程序菜单中运行Enterprise Library配置程序然后打开web.config文件。

添加一些验证规则类并保存配置。Enterprise Library会自动为你的web.config文件添加所有必需的部分。

让我们看到一个库的方法,接受对象进行验证。假设我们已经保存了库,保存之前验证他们的对象。如果有验证错误ValidationException将被抛出。这里是简化保存库的方法。

而且,我们在ASP.NET MVC控制器中使用这个库(如果您的ASP.NET MVC的版本不支持HttpPost属性您可以使用AcceptVerbs(HttpVerbs.Post)代替)。

你可以看到调用方法叫做BindErrorsToModel()。这是辅助方法,通过一系列的验证错误数组与绑定错误相结合。如果你喜欢,您可以在自己的项目使用这个方法。

注意:请不要忘记,在你的表示层中的字段必须和类中名字命名相同。
现在您可以测试您的应用程序,看看是否进行验证工作。如果代码或配置没有错误,您应该看到正确的错误提示。

结论
虽然这个例子有点长,但不难将验证支持添加到您的应用程序。如果您是第一次将会你花费一些时间,但如果你熟悉的工具,一切会很顺利快速。