Quelle est la différence entre RouteLink et ActionLink dans ASP.NET MVC?

120

Je pense que le titre résume assez bien:

Quelle est la différence entre RouteLink()et ActionLink()dans ASP.NET MVC?

c'est-à-dire quand utilisez-vous Html.RouteLink()et quand utilisez-vous Html.ActionLink()dans votre vue?

Gars
la source

Réponses:

78

L'action et les itinéraires ne doivent pas nécessairement avoir une relation 1: 1.

ActionLink générera l'URL pour accéder à une action en utilisant la première route correspondante par nom d'action.

RouteLink générera une URL vers une route spécifique déterminée soit par le nom, soit par les valeurs de route.

Chad Moran
la source
+1 pour un excellent article de blog. Vraiment pratique. Et montre qu'il y a trop de possibilités. Les gars MS ne devraient mettre en œuvre que le plus rapide. Mais les gens utilisent plutôt le lambda le plus lent.
Robert Koritnik
hé merci Mais je pense que le lien est rompu n'a pas atteint.
Veuillez
5
pouvons-nous avoir des exemples?
MaylorTaylor
67

En fait, la sortie des deux méthodes est la même, mais elle est générée de manière légèrement différente:

Html.ActionLink()facilite la génération rapide d'ActionLinks et vous donne un contrôle de base sur ce qui est rendu. Si vous n'avez pas trop de routes, ou si vous n'avez pas besoin de donner trop ou trop d'informations spécifiques, cela fera très bien l'affaire.

La Html.RouteLink()méthode prend des arguments légèrement différents et vous donne ainsi un contrôle un peu plus détaillé sur la façon dont les choses sont gérées. J'ai tendance à utiliser cette méthode lorsque mon scénario est un peu plus compliqué, ou lorsque j'ai une structure d'itinéraire plus détaillée.
Un exemple est un projet récent où je (pour la flexibilité) avait plutôt plusieurs itinéraires différents, qui étaient tous assez simples, plutôt qu'un projet complexe qui permettrait beaucoup d'informations. Ainsi, je me suis retrouvé avec quatre ou cinq routes pour le même contrôleur, toutes avec une action par défaut spécifiée. J'ai principalement utilisé la RouteLinkversion, car lorsque j'ai spécifié un nom de route, les paramètres par défaut étaient saisis automatiquement.

Utilisez-les comme bon vous semble et comme ils correspondent à votre projet. Il n'y a vraiment aucun avantage / inconvénient pour l'un ou l'autre (qui ne soit égalé par aucun autre ...).

Tomas Aschan
la source
19

En plus des autres réponses données ici, RouteLink est un peu plus rapide et ne peut jamais correspondre au mauvais itinéraire car vous avez changé votre table de routage.

Craig Stuntz
la source
1
Simone Chiaretta a fait une analyse des performances ici: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
12

RouteLink prend le nom d'une route, donc si vos noms de route sont fiables et assez uniques, ce sera le même même si le nom de l'action à utiliser change. ActionLink établit plutôt des liens vers une action spécifique d'un contrôleur spécifique. J'utilise les deux dans mes vues, en fonction du type de lien que je recherche!

Simon Steele
la source