ASP.NET MVC 2: пользовательская проверка, доступ ко всей модели? - PullRequest
1 голос
/ 13 января 2011

Я был направлен на очень хорошую статью, которая показывает, как создать пользовательский валидатор от начала до конца.Моя единственная проблема заключается в том, что это работает только для отдельных полей: http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx

Что если мне нужно проверить соответствие 2 или более свойств в моей модели?Как я могу передать всю мою модель в валидатор?

ПРИМЕЧАНИЕ. Чтобы было ясно, я действительно не хочу прибегать к проверке всей модели на обратной почте ..., что противоречит целиэтот метод.

1 Ответ

5 голосов
/ 13 января 2011

Вам нужно использовать пользовательский атрибут проверки и украшать его моделью, а не отдельными свойствами:

[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class MyCustomValidatorAttribute : ValidationAttribute 
{
    public override bool IsValid(object value) 
    {
        // value here will be the model instance you could cast
        // and validate properties
        return true;
    }
}

, а затем украсьте им свою модель:

[MyCustomValidator]
public class MyViewModel
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

В качестве альтернативы аннотациям данных для проверки я бы настоятельно рекомендовал вам FluentValidation.NET . Он также имеет отличную интеграцию с ASP.NET MVC .

...