Как динамически добавлять / удалять валидаторы в ASP.NET MVC во время выполнения? - PullRequest
0 голосов
/ 20 июля 2011

Мы в значительной степени полагаемся на проверку на стороне клиента с использованием MicrosoftMvcValidation.debug.js в нашей текущей реализации приложения.

У нас есть элементы формы и валидаторы форм, которые определяются в базе данных и загружаются из базы данных во время выполнения. У нас есть свойства viewmodel Answer1, Answer2, Answer3 и т. Д., И до сих пор все поля были обязательными, поэтому у нас был атрибут [Required] для каждого из них, но теперь нам нужно применить эту обязательную аннотацию во время выполнения на основе настроек базы данных. поскольку некоторые вопросы не являются обязательными.

Я не хочу делать повторную реализацию самих валидаторов, я просто хочу либо динамически удалять атрибуты [Required] и / или их эффекты во время выполнения, либо динамически добавлять их во время выполнения.

Использование ASP.NET MVC 2.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Добавьте атрибут [Обязательный] во все поля, которые могут быть обязательными. Пока вы не привязываете клиентскую часть управления, вы без проблем обойдете проверку клиента. На стороне сервера после обратного действия выполните цикл по ModelState (который реализует IDictionary) и очистите ошибки в ModelState для валидаторов, которые вы хотите обойти.

foreach( var validator in ModelState){
   if( validator.Key == "Validator_To_Bypass")
       validator.Value.Errors.Clear();
}
0 голосов
/ 20 июля 2011

Кажется, что можно создать пользовательский класс, который наследует атрибут ValidationAttribute, который может определять во время выполнения, как или выполняется проверка. Это один из способов выполнить это требование.

...