ASP.NET MVC 3 Pattern用于动态验证属性,包括客户端

时间:2012-09-13 09:04:14

标签: asp.net-mvc-3 entity-framework validation

我对表单中字段的验证要求包含在外部表中,以便可以在不更改和重建代码的情况下更新它们。

我有大约100个字段,其中包含验证要求 - 范围,必需,正则表达式以及对其他字段的依赖性。一个例子是日期范围验证。出生日期字段要求的日期范围介于当前日期的-10年和 - 50年之间。

我已阅读过该主题,但尚未确定完整解决方案的模式。

我正在使用带有MVC 3和实体框架的Visual Studio 2010。

感谢您的任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

在一个简单的级别中,我认为您仍然可以使用内置的Data-Annotations验证属性来进行验证,为此您应该将表中存储的验证规则映射到属性。

我认为您所要做的就是通过继承类ModelValidatorProvider来创建自定义模型验证提供程序。此类包含一个名为GetValidators的方法,该方法返回该模型的集合验证程序。

您必须实现GetValidators方法,并且在那里您必须进行数据库调用以从数据库(或从缓存?)获取模型的验证规则并将它们转换为ModelValidator秒。您仍然可以使用内置的DataAnnotationsModelValidator进行验证。

我建议您查看DataAnnotationsModelValidatorProvider的源代码,它将为您提供所有信息。在该类中,他们所做的基本上是迭代应用于模型属性的所有验证属性,并通过适配器和工厂将它们转换为ModelValidator。在你的情况下,它们被存储为表中的记录而不是属性,我认为不会有太多的工作。