2011-12-06 124 views
4

我想使用來自可配置源的asp.net mvc客戶端/服務器驗證。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> 

有了這個計劃,將有可能啓用/禁用驗證。

有什麼想法?

回答

6

如果您需要這個,請考慮一些更高級的驗證框架,例如企業庫驗證塊。

如果你想自己做,我建議建立從ValidationAttribute iniherited這樣的自定義屬性(部分僞代碼,我相信你的想法)

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; 
    } 
}