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

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?

115
demandé sur abatishchev 2009-05-14 22:03:54

4 réponses

L'Action et les Routes n'ont pas besoin d'avoir une relation 1:1.

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

RouteLink génère une URL vers une route spécifique déterminée soit par nom, soit par des valeurs de route.

73
répondu Chad Moran 2011-12-23 17:43:24

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() Il est facile de générer des liens D'action rapidement, et vous donnera un contrôle de base sur ce qui est rendu. Si vous n'avez pas trop de routes, ou n'avez pas besoin de donner trop d'informations ou trop spécifiques, cela fera le travail très bien.

Le Html.RouteLink() la méthode prend des arguments légèrement différents, et vous donne ainsi un contrôle un peu plus détaillé sur le 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ù j'ai (pour la flexibilité) plutôt eu plusieurs itinéraires différents, qui étaient tous assez simples, qu'un 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 surtout utilisé la version RouteLink, parce que quand je spécifié un nom de route, les paramètres par défaut ont été saisis automatiquement.

Utilisez-les comme vous le souhaitez et comme ils ont un sens pour votre projet. Il n'y a vraiment aucun avantage/inconvénient pour l'un ou l'autre (qui n'est pas égalé par un autre...).

65
répondu Tomas Lycken 2009-05-14 18:37:12

En plus des autres réponses données ici, RouteLink est un peu plus rapide et ne peut jamais correspondre à la mauvaise route car vous avez changé votre table de routage.

19
répondu Craig Stuntz 2009-05-14 18:45:02

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

12
répondu Simon Steele 2009-05-14 18:10:44