ASP.NET MVC - один валидатор на два текстовых поля - PullRequest
0 голосов
/ 17 августа 2011

У меня интересное требование к клиенту.

У меня есть элемент управления, который должен отображаться так:

Date of xxx     [ mm ][ yy ]

Существует метка с двумя текстовыми полями - одно для месяца в цифрах и одно для года в цифрах.

Хотя есть два текстовых поля, мы хотим, чтобы проверка запускалась после проверки обоих полей.

Также на странице есть несколько таких элементов управления. Как лучше всего упаковать это, чтобы я мог позвонить:

@Laberfor(x => x.Datexxx)
@EditorFor(x => x.Datexxx)

Заранее спасибо

1 Ответ

0 голосов
/ 17 августа 2011

Если ваш элемент управления строго типизирован, вы можете реализовать IValidatableObject и его метод Validate.

Предполагая, что ваша модель выглядит следующим образом:

public class CombinedDateViewModel : IValidatableObject
{
    [Required]
    public int month { get; set; }
    [Required]
    public int year { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {        
        if(month > 12 || month < 1)
            yield return new ValidationResult("Month is out of range");
        if(year < 0 || year > 2020)
            yield return new ValidationResult("Year is out of range");
    }
}

Полученные результаты проверки будутманифест в сводке проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...