Как реализовать валидацию в ModelBinder (ASP.NET MVC) - CodeHelper

Как реализовать валидацию в ModelBinder (ASP.NET MVC)

2

Есть готовая обертка над фреймворком валидации, которая адаптирует API этого фреймворка к механизму отображения ошибок ASP.NET MVC (ModelState и т.п.). Как встроить эту систему в цикл обработки запроса? Желательно использовать ModelBinders.

Лучший ответ:

1

Нужно создать класс, унаследованный от DefaulModelBinder и перекрыть метод OnModelUpdated:

public class ValidationModelBinder : DefaultModelBinder
{
    protected override void OnModelUpdated(
              ControllerContext controllerContext,
              ModelBindingContext bindingContext)
    {
        // Получаем объект, который нужно валидировать
        var objectToValidate = bindingContext.Model;

        // Получаем объект ModelState для регистрации ошибок
        var modelState = bindingContext.ModelState;

        // ... код валидации ...
    }
}

Следующим шагом нужно зарегистрировать этот binder. В файле Global.asax.cs в методе Application_Start нужно добавить строку:

ModelBinders.Binders.Add(typeof(TypeToValidate), new ValidationModelBinder());

Теперь, если в каком-либо контроллере есть метод, принимающий объект типа TypeToValidate, то перед вызовом этого метода объект будет автоматически валидироваться.

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.