2010-08-06 19 views
7

Estoy trabajando en un proyecto MVC.NET 2.0 donde intento introducir una lógica especial de manejo de errores en el método OnException del controlador. Básicamente, quiero poder determinar el tipo de resultado del método del controlador en el que se generó la excepción no controlada, de modo que pueda devolver los datos de error en un determinado formato dependiendo del tipo (json para JsonResult y html para ActionResult). ¿Alguien puede indicarme una forma de determinar ese tipo? Agradecería enormemente cualquier ayuda.Determine el tipo de resultado en OnException del controlador

Gracias de antemano

Respuesta

4

Asumiendo que Dejase't cambiar la dirección por defecto:

protected override void OnException(ExceptionContext filterContext) 
{ 
    var action = filterContext.RouteData.Values["action"].ToString(); 
    var type = filterContext.Controller.GetType(); 
    var method = type.GetMethod(action); 
    var returnType = method.ReturnType; 
    //...do whatever here... 
} 

Buena suerte!

+0

Dadas dos acciones con el mismo nombre, como Editar y Editar (un GET, un POST), esto da una AmbiguousMatchException. ¿Hay alguna manera de determinar, a partir del contexto, qué acción se llamó? – yoozer8

+2

@Jim puede usar type.GetMethods(). Where (m => m.Name.Equals (action)) en ese caso y obtener el método correcto conociendo el verbo que se usó en la solicitud actual y mirando los atributos de cada método. – uvita

Cuestiones relacionadas