2011-12-06 18 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

これが必要な場合は、Enterprise Library Validation Blockなどのより高度な検証フレームワークを検討してください。

あなたはそれを自分で行いたい場合は、私はこのような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; 
    } 
}