我对表单中字段的验证要求包含在外部表中,以便可以在不更改和重建代码的情况下更新它们。
我有大约100个字段,其中包含验证要求 - 范围,必需,正则表达式以及对其他字段的依赖性。一个例子是日期范围验证。出生日期字段要求的日期范围介于当前日期的-10年和 - 50年之间。
我已阅读过该主题,但尚未确定完整解决方案的模式。
我正在使用带有MVC 3和实体框架的Visual Studio 2010。
感谢您的任何帮助。提前谢谢。
答案 0 :(得分:1)
在一个简单的级别中,我认为您仍然可以使用内置的Data-Annotations验证属性来进行验证,为此您应该将表中存储的验证规则映射到属性。
我认为您所要做的就是通过继承类ModelValidatorProvider
来创建自定义模型验证提供程序。此类包含一个名为GetValidators
的方法,该方法返回该模型的集合验证程序。
您必须实现GetValidators
方法,并且在那里您必须进行数据库调用以从数据库(或从缓存?)获取模型的验证规则并将它们转换为ModelValidator
秒。您仍然可以使用内置的DataAnnotationsModelValidator
进行验证。
我建议您查看DataAnnotationsModelValidatorProvider
的源代码,它将为您提供所有信息。在该类中,他们所做的基本上是迭代应用于模型属性的所有验证属性,并通过适配器和工厂将它们转换为ModelValidator
。在你的情况下,它们被存储为表中的记录而不是属性,我认为不会有太多的工作。