Конфигурируемые проверки ASP.NET MVC - PullRequest
4 голосов
/ 06 декабря 2011

Я хотел бы использовать проверку клиента / сервера mvc asp.net, поступающую из настраиваемого источника.

Некоторые, например, файл .config, в который я мог бы поместить информацию: Type, Member, ValidationType

<validations>
    <add type="Customer" member="Name" validator="Required" />
    <add type="Customer" member="Age" validator="Range" mimimum="18" maximum="100" />
</validations>

При таком плане можно было бы включить / отключить проверки.

Есть идеи?

1 Ответ

6 голосов
/ 06 декабря 2011

Если вам это нужно, рассмотрите некоторые более продвинутые рамки проверки, например, Блок валидации Enterprise Library.

Если вы хотите сделать это самостоятельно, я бы предложил создать пользовательский атрибут, унаследованный от 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...