2011-08-24 4 views
0

La Route:simple question Html.ActionLink (MVC3)

  routes.MapRoute(
      "Items", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new {controller = "Item", action = "Index", id = UrlParameter.Optional} // Parameter defaults 
      ); 

Le HtmlHelper:

@Html.ActionLink("Chairs", "List", "Item", new {id="Chairs"}, null) 

Le lien qu'il génère:

http://localhost:57899/Item/List?id=Chairs 

Ce que je veux montrer:

http://localhost:57899/Item/List/Chairs 

Comment faire cela?

+0

Quelle est la signature de votre action 'List' de ItemController? –

+0

@David Signature? 'Public ActionResult List (identificateur de chaîne) { return View (_repository.GetItems (id)); } ' –

Répondre

0

Au lieu d'utiliser ActionLink, que se passe-t-il si vous essayez les opérations suivantes?

@Html.RouteLink("Items", new { id = "Chairs" }) 
0

Vous appelez Html.RouteLink (pas d'action Link) et carte un itinéraire supplémentaire sous votre générique comme ceci:

routes.MapRoute(
     "ChairsRoute", // Route name 
     "Item/List/{id}", // URL with parameters 
     new {controller = "Item", action = "Index", id = UrlParameter.Optional} // Parameter defaults 
     ); 

lorsque vous appelez RouteLink, vous simplement passer ce nom "ChairsRoute"