Antworten:
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.
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 RouteLink
Version 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 ...).
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.
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!