2012-02-20 9 views
22

Sono in procinto di generare URL dinamicamente nella mia pagina cshtml. Qual è la differenza tra Url.RouteUrl() & Url.Action()?Differenza tra Url.RouteUrl() e Url.Action() in MVC3

Quale dovrei utilizzare per generare l'URL & che differenza ha in termini di implementazione?

Grazie in anticipo.

risposta

45

RouteUrl generato l'url in base al nome del percorso. Se si dispone di più percorsi con parametri simili, il metodo Action può selezionare un metodo errato, in base all'ordine delle definizioni di percorso. Questo può accadere quando i tuoi percorsi hanno parametri opzionali.

Se si desidera assicurarsi che venga utilizzato un determinato URL del percorso, è necessario chiamare RouteUrl passando questo nome percorso. I nomi delle rotte sono unici e identificano chiaramente un percorso.

Un'altra differenza è che Action è MVC specifico (utilizza nomi di controller e azioni), mentre RouteUrl è generico e può essere utilizzato senza MVC (è possibile avere il routing in WebForms).

16

Url.RouteUrl consente di specificare un percorso specifico per nome. Questo sarà forza l'utilizzo di tale percorso. Url.Action sceglierà semplicemente il primo percorso che corrisponde ai criteri.

+0

Ciò significa anche che Url.RouteUrl è migliore in termini di prestazioni rispetto a Url.Action – Ranganatha