我想使用来自可配置源的asp.net mvc客户端/服务器验证。
有些像.config文件,我可以放置信息: 类型,成员,ValidationType
<validations>
<add type="Customer" member="Name" validator="Required" />
<add type="Customer" member="Age" validator="Range" mimimum="18" maximum="100" />
</validations>
通过此计划,可以启用/禁用验证。
有什么想法吗?
答案 0 :(得分:6)
如果需要,请考虑一些更高级的验证框架,例如Enterprise Library Validation Block。
如果你想自己动手,我会建议你像ValidationAttribute一样创建自定义属性(部分伪代码,我相信你明白了)
public class ConfigurableValidationAttribute: ValidationAttribute
{
public override bool IsValid(object value)
{
string objectType = value.GetType().FullName;
string objectName = GetMyObjectName(value); // interface? reflection?
var validationRules = GetValidationRulesFor(objectType, name); // from your configuration
foreach (var rule in validationRules)
{
ValidationAttribute attr = null;
switch (rule.ValidatorName)
{
case "Required": attr = new RequiredAttribute();
case "StringLength": attr = // you get the idea
}
if (!attr.IsValid(value)) return false;
}
return true;
}
}