2015-06-09 133 views
0

我有兩個途徑,一個Asp.net MVC Routelink空控制器參數

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

我加了另一條路線,有時參數將一個字符串

  routes.MapRoute(
      name: "ByName", 
      url: "{controller}/{action}/{name}", 
      defaults: new { controller = "Home", action = "Index", name = UrlParameter.Optional } 
     ); 

當我使用默認值「 ByName「路由中,URL很好,但是我的控制器中的參數是空的

在視圖中:

@Html.RouteLink(application.Nom, "ByName", new {controller= "Packaging", action = "EditApplication", name = application.Nom}) 

控制器

public ActionResult EditApplication(string name) 

URL結果是罰款:... /包裝/ EditApplication/VisualStudio的,但參數值保持爲空。爲什麼?

謝謝

回答

1

你不能有TWO路線相同參數和相同的定義,第一個將優先考慮。相反,您需要具有如下所示的路線中的特定約束。

routes.MapRoute(
     name: "ByName", 
     url: "sample/{action}/{name}", 
     defaults: new { controller = "Home", action = "Index", name = UrlParameter.Optional } 
     ); 

routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
+0

確實有效,你會認爲命名路線會克服這個,但它不會。 謝謝! – BenoitM