5

Ho un elenco dinamico di ActionLinks generati in fase di esecuzione in questo modo:MVC routing sbarazzarsi di/Indice in URL

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

quindi mi sto colpendo il metodo indice sul controller utente.

devo anche i miei RouteConfig.cs (si tratta di un app MVC4) impostati come segue:

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 } 
     ); 
    } 

questo mi dà il link server/application/User/Index/1 nella mia lista di link.

Cosa devo fare nella generazione della lista e/o nel file di instradamento per cambiarlo in server/application/User/1?

risposta

9

Aggiungi un percorso che non ha bisogno di un'azione, ma non si scontrano con altri itinerari

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

Lavorato voluto un fascino - grazie! – markp3rry