Обычно я проверяю свою модель в методе действия перед фиксацией данных в базе данных.
[HttpPost]
public ActionResult MyActionMethod(MyModelType model){
if (ModelState.IsValid){
//commit changes to database...
return View("SuccessView",model);
}
return View(model);
}
Но в очень редких случаях мне нужно выполнить дополнительную проверку на бизнес-уровне, пока модель фиксируется. Если возникает ошибка проверки, я хотел бы вызвать исключение на бизнес-уровне и использовать это исключение для возврата представления с ошибками проверки.
Я ищу способ реализовать это без изменения кода в моем контроллере. Итак, я ищу способ избежать чего-то такого:
[HttpPost]
public ActionResult MyActionMethod(MyModelType model){
if (ModelState.IsValid){
try {
//commit changes to database...
} catch (ValidationException e){
ModelState.AddModelError(...);
return View(model);
}
return View("SuccessView",model);
}
return View(model);
}
Есть ли способ сделать это?
Я думал о фильтре действий, который улавливает ValidationExceptions и возвращает подходящее представление с ошибками проверки до того, как сработает обычный фильтр [HandleError]
. Возможно ли что-то подобное?
Изменить: Я только что нашел решение (см. Ниже), но я не смогу отметить его как правильный ответ, пока не пройдет 48 часов ...