Was ist der Unterschied zwischen RouteLink und ActionLink in ASP.NET MVC?

120

Ich denke, dass der Titel es ziemlich gut zusammenfasst:

Was ist der Unterschied zwischen RouteLink()und ActionLink()in ASP.NET MVC?

dh wann verwenden Sie Html.RouteLink()und wann verwenden Sie Html.ActionLink()in Ihrer Ansicht?

Kerl
quelle

Antworten:

78

Aktion und Routen müssen keine 1: 1-Beziehung haben.

ActionLink generiert die URL, um mithilfe der ersten übereinstimmenden Route nach Aktionsnamen zu einer Aktion zu gelangen.

RouteLink generiert eine URL zu einer bestimmten Route, die entweder durch den Namen oder durch Routenwerte bestimmt wird.

Chad Moran
quelle
+1 für einen tollen Blogbeitrag. Wirklich praktisch. Und zeigt, dass es einfach zu viele Möglichkeiten gibt. MS-Leute sollten nur die schnellsten implementieren. Aber die Leute benutzen lieber das langsamste schicke Lambda.
Robert Koritnik
hey danke aber ich denke der link ist kaputt nicht erreicht. Bitte geben Sie mir erneut den Link danke
user1006544
5
Dürfen wir Beispiele bekommen?
Maylor Taylor
67

Tatsächlich ist die Ausgabe der beiden Methoden dieselbe, wird jedoch auf leicht unterschiedliche Weise generiert:

Html.ActionLink()macht es einfach, ActionLinks schnell zu generieren und gibt Ihnen grundlegende Kontrolle darüber, was gerendert wird. Wenn Sie nicht zu viele Routen haben oder nicht zu viele oder zu spezifische Informationen angeben müssen, funktioniert dies einwandfrei.

Die Html.RouteLink()Methode verwendet leicht unterschiedliche Argumente und gibt Ihnen somit eine etwas detailliertere Kontrolle über die Art und Weise, wie Dinge gehandhabt werden. Ich neige dazu, diese Methode zu verwenden, wenn mein Szenario etwas komplizierter ist oder wenn ich eine detailliertere Routenstruktur habe.
Ein Beispiel ist ein aktuelles Projekt, bei dem ich (aus Gründen der Flexibilität) eher mehrere verschiedene Routen hatte, die alle recht einfach waren, als eine komplexe, die viele Informationen zuließ. So erhielt ich vier oder fünf Routen für denselben Controller, alle mit einer angegebenen Standardaktion. Ich habe meistens die RouteLinkVersion verwendet, da bei der Angabe eines Routennamens die Standardparameter automatisch eingegeben wurden.

Verwenden Sie sie so, wie Sie möchten und wie sie für Ihr Projekt sinnvoll sind. Es gibt wirklich keinen Auf- oder Abwärtstrend bei einem von beiden (der von keinem anderen erreicht wird ...).

Tomas Aschan
quelle
19

Zusätzlich zu den anderen hier gegebenen Antworten ist RouteLink etwas schneller und kann niemals mit der falschen Route übereinstimmen, da Sie Ihre Routing-Tabelle geändert haben.

Craig Stuntz
quelle
1
Simone Chiaretta hat hier einige Leistungsanalysen durchgeführt: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
12

RouteLink nimmt den Namen einer Route an. Wenn Ihre Routennamen also zuverlässig und ziemlich eindeutig sind, ist dies auch dann der Fall, wenn sich der zu verwendende Aktionsname ändert. ActionLink verweist stattdessen auf eine bestimmte Aktion eines bestimmten Controllers. Ich verwende beide in meinen Ansichten, je nachdem, nach welcher Art von Link ich suche!

Simon Steele
quelle