2013-04-05 72 views
2

我將Home控制器的默認操作設置爲登陸。如何在mvc中映射多個路由

但ErrorController默認動作應該是指數

在Global.cs中的RegisterRoutes方法,我曾這樣寫的: -

 routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Landing", id = UrlParameter.Optional } 

但是,當我試圖從的Application_Error重定向到錯誤事件: -

Exception error = Server.GetLastError();      
string redirectUrl = "~/Error/id=" + errorId; 
HttpContext.Current.Server.ClearError(); 
HttpContext.Current.Response.Redirect(redirectUrl); 

它是投擲錯誤 - 行動登陸未找到。

回答

2

只需添加另一條路線您當前的路線上面更具體的錯誤情況:

routes.MapRoute(
      "Error", // Route name 
      "Error/{action}/{id}", // URL with parameters 
      new { action = "Index", id = UrlParameter.Optional } 

此外,這看起來有點怪:

string redirectUrl = "~/Error/id=" + errorId; 

好像它會更該這樣:前

string redirectUrl = "~/Error?id=" + errorId; 
+0

這個怎麼樣 - string redirectUrl =「〜/ Error /?id =」+ errorId; – 2013-04-05 11:12:23

+0

我認爲這也會起作用。 – 2013-04-05 11:13:26

+0

在默認路由上方添加路由映射後,它會拋出錯誤 - 「值不能爲空或空。\ r \ n參數名稱:controllerName」 – 2013-04-05 11:25:11

0

把這個在你的路由映射方法另一個,它會給錯誤控制器一個不同的默認操作。訂單在這裏很重要,路線按照先到先得的原則進行匹配。

routes.MapRoute(
     "Error", // Route name 
     "Error/{action}/{id}", // URL with parameters 
     new { controller = "Error", action = "index", id = UrlParameter.Optional } 
+0

在默認路由上方添加其他路由映射後,它會拋出錯誤 - 「值不能爲空或空。\ r \ n參數名稱:controllerName」 – 2013-04-05 11:28:28