Normalmente estoy validando mi modelo en el método de acción antes de enviar datos a la base de datos.¿Puedo devolver un resultado de acción de un filtro de acción?
[HttpPost]
public ActionResult MyActionMethod(MyModelType model){
if (ModelState.IsValid){
//commit changes to database...
return View("SuccessView",model);
}
return View(model);
}
embargo, en algunos casos muy raros que necesito para realizar una validación adicional en la capa de negocio, mientras que el modelo que se está cometiendo. Si se produce un error de validación, me gustaría plantear una excepción en la capa empresarial y usar esa excepción para devolver una vista con errores de validación.
Estoy buscando una forma de implementar esto sin alterar ningún código en mi controlador. Así que estoy buscando una forma de evitar algo así:
[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);
}
¿Hay alguna manera de hacerlo?
Estaba pensando en un filtro de acción que atrape ValidationExceptions y devuelva la vista adecuada con errores de validación antes de que el filtro [HandleError]
comience a funcionar. ¿Es posible algo así?
Editar: acabo de encontrar la solución (véase más adelante), pero no voy a ser capaz de marcar esto como la respuesta correcta hasta 48 horas han pasado ...
Muy bien, ¡no sabía de este punto de extensión hasta ahora! – Oliver