2010-08-06 25 views
7

我正在處理一個MVC.NET 2.0項目,我試圖在控制器的OnException方法中放入一些特殊的錯誤處理邏輯。基本上我希望能夠確定引發未處理異常的控制器方法的結果類型,以便我可以根據類型(JsonResult和ActionResult的html)以某種格式返回錯誤數據。任何人都可以指出我的方式來確定這種類型?我將不勝感激任何幫助。在控制器的OnException中確定結果類型

在此先感謝

回答

4

假設你didn'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... 
} 

祝你好運!

+0

給定兩個具有相同名稱的操作,如編輯和編輯(一個GET,一個POST),這會給出一個AmbiguousMatchException。有沒有辦法從上下文中確定哪個操作被調用? – yoozer8 2014-01-14 15:27:11

+2

@Jim在這種情況下可以使用type.GetMethods()。其中​​(m => m.Name.Equals(action)),並通過知道當前請求中使用的動詞並查看屬性來獲取正確的方法每種方法。 – uvita 2014-01-15 12:58:33

相關問題