Qual è la differenza tra RouteLink e ActionLink in ASP.NET MVC?


120

Penso che il titolo lo riassuma più o meno:

Qual è la differenza tra RouteLink()e ActionLink()in ASP.NET MVC?

cioè quando usi Html.RouteLink()e quando usi Html.ActionLink()nella tua vista?

Risposte:


78

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

ActionLink genererà l'URL per accedere a un'azione utilizzando la prima route corrispondente in base al nome dell'azione.

RouteLink genererà un URL per una rotta specifica determinata dal nome o dai valori della rotta.


+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 le persone usano piuttosto il lambda più lento.
Robert Koritnik

hey grazie Ma penso che il collegamento sia interrotto non è stato raggiunto. per favore mi
fornirai di

5
possiamo avere esempi?
MaylorTaylor

67

In realtà, l'output dei due metodi è lo stesso, ma viene generato in modi leggermente diversi:

Html.ActionLink()semplifica la generazione rapida di ActionLink e offre un controllo di base su ciò che viene visualizzato. Se non hai troppe rotte o non hai bisogno di fornire troppe o informazioni troppo specifiche, questo funzionerà perfettamente.

Il Html.RouteLink()metodo accetta argomenti leggermente diversi e quindi offre un controllo leggermente più dettagliato sul modo in cui vengono gestite le cose. Tendo ad utilizzare questo metodo quando il mio scenario è un po 'più complicato o quando ho una struttura del percorso più dettagliata.
Un esempio è un progetto recente in cui io (per flessibilità) avevo diversi percorsi, tutti abbastanza semplici, piuttosto che uno complesso che avrebbe consentito molte informazioni. Quindi, ho finito con quattro o cinque percorsi per lo stesso controller, tutti con un'azione predefinita specificata. Ho utilizzato principalmente la RouteLinkversione, perché quando ho specificato un nome di percorso, i parametri predefiniti sono stati inseriti automaticamente.

Usali come preferisci e quando hanno senso per il tuo progetto. Non c'è davvero alcun lato positivo / negativo per nessuno dei due (che non è eguagliato da altri ...).



12

RouteLink prende il nome di una rotta, quindi se i nomi delle vostre rotte sono affidabili e abbastanza univoci, questo sarà lo stesso anche se il nome dell'azione da utilizzare cambia. ActionLink si collega invece a un'azione specifica di un controller specifico. Uso entrambi nelle mie visualizzazioni, a seconda del tipo di collegamento che cerco!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.