2010-08-06 8 views
7

Sto lavorando a un progetto MVC.NET 2.0 in cui sto tentando di inserire una speciale logica di gestione degli errori nel metodo OnException del controller. Fondamentalmente voglio essere in grado di determinare il tipo di risultato del metodo controller in cui è stata sollevata l'eccezione non gestita, in modo che possa restituire i dati di errore in un determinato formato dipendente dal tipo (json per JsonResult e html per ActionResult). Qualcuno può indicarmi un modo per determinare quel tipo? Apprezzerei davvero qualsiasi aiuto disponibile.Determinare il tipo di risultato in OnException del controller

Grazie in anticipo

risposta

4

Supponendo che si cambia il comportamento di default hanno ragione't:

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... 
} 

Buona fortuna!

+0

Dato due azioni con lo stesso nome, come Modifica e Modifica (un GET, un POST), questo fornisce un AmbiguousMatchException. C'è un modo per determinare dal contesto quale azione è stata chiamata? – yoozer8

+2

@Jim puoi usare type.GetMethods(). Where (m => m.Name.Equals (action)) in quel caso e ottenere il metodo giusto conoscendo il verbo che è stato usato nella richiesta corrente e guardando gli attributi di ciascun metodo. – uvita

Problemi correlati