2017-01-04 36 views
9

用參數來執行動作我在global.asax如何創建控制器對象,並從Global.asax的

protected void Application_Error(object sender, EventArgs e) 
     { 
      // ... 
      var routeData = new RouteData(); 
      routeData.Values.Add("controller", "Home"); 
      routeData.Values.Add("action", "Error"); 

      IController controller = new Controllers.HomeController(); 
      controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData)); 

     } 

如何添加參數來操作方法/的RouteData這個代碼?我想向用戶顯示異常消息。

+0

爲什麼,而不是調用服務或業務邏輯從應用程序錯誤? –

+0

你的意思是直接從global.asax處理錯誤並返回一個視圖嗎? – Muflix

+0

你想要做什麼與應用程序錯誤塊,想記錄錯誤或使數據庫調用登錄錯誤? –

回答

2

我算起來,

routeData.Values.Add("message", exception.Message); 

,並在行動中正好趕上這個參數,你想打電話誤差控制方法

public ActionResult Index(string message) 
1

要顯示自定義錯誤頁面,您需要更改web.config。

<system.web> <customErrors mode="On" defaultRedirect="~/Error"> <error redirect="~/Error/NotFound" statusCode="404" /> </customErrors> </system.web>

您可以創建不同的狀態代碼錯誤頁面。

確保您有控制器和操作方法來返回視圖。

在Application_error MVC之後,它將自動重定向到web.config中描述的同一頁面。

欲瞭解更多信息,請參閱此link

+0

在這種情況下,如何訪問操作中的錯誤異常? – Muflix

+0

將在Application_error級別訪問異常,.net將重定向到配置文件中描述的操作。該操作只應返回視圖 –

+0

,但是如何在視圖中顯示錯誤描述(異常消息)? – Muflix

相關問題