2009-05-14 15 views

risposta

72

Azione e percorsi non devono avere una relazione 1: 1.

ActionLink genererà l'URL per ottenere un'azione utilizzando la prima route corrispondente per nome dell'azione.

RouteLink genererà un URL per un percorso specifico determinato dal nome o dai valori del percorso.

+0

+1 per un ottimo post sul blog. Davvero utile E mostra che ci sono troppe possibilità. I ragazzi di MS dovrebbero implementare solo il più veloce. Ma la gente preferisce usare la fantasia lambda più lenta. –

+0

hey grazie Ma penso che il collegamento non sia stato raggiunto. pls mi fornirai nuovamente il link grazie – user1006544

+4

possiamo ottenere degli esempi? – MaylorTaylor

12

RouteLink prende il nome di una via, quindi se i vostri nomi di percorso sono affidabili e abbastanza unico allora questo sarà lo stesso anche se il nome dell'azione da utilizzare modifiche. Link ad ActionLink invece a un'azione specifica di un controller specifico. Uso entrambi nelle mie visualizzazioni, a seconda del tipo di collegamento che sto cercando!

63

In realtà, l'uscita dai due metodi è lo stesso, ma si è generato in modi leggermente diversi:

Html.ActionLink() lo rende facile generare ActionLinks veloce, e vi darà il controllo di base su ciò che viene reso. Se non hai troppe rotte o non hai bisogno di dare troppe informazioni o troppo specifiche, questo andrà benissimo.

Il metodo Html.RouteLink() prende leggermente diversi argomenti, e quindi si dà un po 'di controllo più dettagliato sul modo in cui le cose vengono gestite. Tendo ad usare questo metodo quando il mio scenario è un po 'più complicato, o quando ho una struttura di percorso più dettagliata.
Un esempio è un progetto recente in cui I (per flessibilità) ha avuto piuttosto diversi percorsi, che erano tutti abbastanza semplici, rispetto a uno complesso che avrebbe consentito di ottenere molte informazioni. Così, ho finito con quattro o cinque percorsi per lo stesso controller, il tutto con una azione predefinita specificata. Ho usato principalmente la versione RouteLink, perché quando ho specificato il nome di una rotta, i parametri predefiniti sono stati inseriti automaticamente.

Usali come vuoi e come hanno senso per il tuo progetto. Non c'è davvero alcun rialzo/ribasso per nessuno di loro (che non è compensato da nessun altro ...).

19

Oltre alle altre risposte fornite qui, RouteLink è un po 'più veloce e non può mai corrispondere alla rotta sbagliata perché è stata modificata la tabella di routing.

+1

Simone Chiaretta ha fatto alcune analisi delle prestazioni qui: http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry

Problemi correlati