5

Mam dynamiczną listę ActionLinks generowanych w czasie wykonywania tak:MVC Routing pozbyć/indeks URL

@Html.ActionLink(x.Name, "Index", "User", new { x.ID }, null) 

więc jestem uderzanie metody indeks na kontrolerze użytkownika.

Mam też moje RouteConfig.cs (jest to aplikacja MVC4) określone następująco:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

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

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

To daje mi link server/application/User/Index/1 w mojej listy linków.

Co muszę zrobić w generowaniu listy i/lub routingu, aby zmienić to na server/application/User/1?

Odpowiedz

9

Dodaj trasę, która nie potrzebuje działania, ale nie będzie kolidować z innymi drogami

routes.MapRoute("User", "User/{id}", 
         new { controller = "User", action = "Index" }); 
+0

Pracował polubili czar - dzięki! – markp3rry