2014-06-10 109 views
0

我正在嘗試將自定義URL添加到我的應用程序中。例如,我有一個報告部分,我希望該部分的所有控制器都以「報告」開頭。目前,我的URL看起來像:c#MVC 4中的自定義URL

localhost:12345/MyReport 

,但我希望它看起來像

localhost:12345/Report/MyReport 

MyReport是我的控制器的名稱。

我試圖更改下面的代碼在Global.asax中

  routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

通過

  routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

      routes.MapRoute(
       "Report", 
       "Report/{controller}/{action}/{id}", 
       new { controller = "MyReport", action = "Index", id = UrlParameter.Optional } 
      ); 

但我得到一個頁面沒有找到錯誤,當我嘗試訪問localhost:12345/Report/MyReport ...任何線索?

+1

您可能必須將其映射到默認值之前。 – TheNorthWes

回答

5

起初這很瘋狂,訂單很重要。路由將找到匹配的第一條路由,併爲其提供服務。嘗試將默認的一個放在新的自定義之後。

因此,您要去Report的控制器,並試圖找到MyReport的操作。這確實沒有找到。

+5

所以經驗法則總是有最通用的路線**最後**。 – gunr2171

+0

我切換順序,它的工作!但現在,我的所有網址都以Report/...開頭 – Gudradain

+0

@Gudradain您可能正在尋找控制器可選的東西?使用類似「Report/MyReport/{action}/{id}'的URL作爲你的URL,然後使用默認的控制器'MyReport'? –