2015-02-06 56 views
0

你知道MVC默認路由是C#MVC:圖路線是添加/索引網址後,我改變了默認路由

context.MapRoute(
      "Public_default", 
      "{controller}/{action}/{id}", 
      new { 
       controller = "Home", 
       action = "Index", 
       id = UrlParameter.Optional 
      } 
     ) 

,並呼籲Url.Action( 「」)返航「/ myController的「

後,我改變了缺省路由:

context.MapRoute(
      "Public_default", 
      "{controller}/{action}/{id}/{slug}", 
      new { 
       controller = "Home", 
       action = "Index", 
       id = UrlParameter.Optional, 
       slug = UrlParameter.Optional 
      } 
     ) 

現在呼籲Url.Action( 「」)正在返回「/ myController的/索引」

的問題是「/索引」。它似乎忽略了路線默認值中的action =「Index」

我認爲這是因爲添加{slug}路由。

注意:當我打電話給/MyController它像以前一樣工作。但Url.Action(「」)行爲已更改。

我該如何解決這個問題?

+0

'Url.Action'(和其他傭工)取生成路由時將當前上下文(RouteData)轉換爲公式。我不知道您要從哪個網頁創建鏈接,但很可能它將這些路線值轉換爲等式。 – 2015-02-06 14:08:34

+0

@BradChristie我從同一個控制器調用它。例如在「home」控制器和「about」動作內部 – abzarak 2015-02-06 14:11:23

回答

1

令人驚訝的,我把航線航線配置,它解決了這個問題... 但我認爲這是Url.Action()錯誤行爲

+0

問題是該路由包含2個可選參數(只有最後一個應該是可選的),這意味着路由引擎無法解析它。例如,如果你將id參數改爲'id = 1'(不是可選的),那麼它將返回'/ MyController'' – 2015-02-06 22:02:17

+0

救了我abzarak謝謝 – 2015-06-14 17:47:32