Ho un'app MVC3 con più percorsi. Due di loro sono definiti in questo modo:Url.Action non fornisce il risultato previsto. I valori del percorso indesiderati rimangono
routes.MapRoute(
null,
"System/{name}", // URL with parameters
new { controller = "Systems", action = "Index" } // Parameter defaults
);
routes.MapRoute(
null,
"Carrier/{name}", // URL with parameters
new { controller = "Carriers", action = "Index" } // Parameter defaults
);
Ora, nel mio menù ho due link a questi percorsi che vengono creati utilizzando Url.Action:
Url.Action("Index","Systems")
Url.Action("Index","Carriers")
Ora quando avvio l'applicazione, tutto sembra buono, e i collegamenti nel menu mostrano come /System/
e /Carrier/
, e questo è il valore atteso.
Tuttavia, quando navigo a per esempio /System/MySystem
nella pagina web avrei ancora voglia i link per puntare allo stesso posto, ma ora puntare a /System/MySystem
e /Carrier/MySystem
.
Ho provato un sacco di cose per impedire al collegamento di utilizzare il nome dal valore del percorso, ma senza risultato. Il caso più strano ho vissuto è stato quando ho provato questo:
Url.Action("Index","Systems", new{name = (string)null})
Ora il collegamento si presentò come
/System?name=MySystem
Ci sono un buon modo qui per fare in modo che il valore del nome dai valori di rotta non lo fa interferire con questi collegamenti in alcun modo?
Speravo in qualcosa di più elegante, ma almeno questo ha portato a termine il lavoro. Grazie. –