Jaka jest różnica między RouteLink i ActionLink w ASP.NET MVC?

120

Myślę, że tytuł w dużym stopniu to podsumowuje:

Jaka jest różnica między RouteLink()i ActionLink()w ASP.NET MVC?

tj. kiedy używasz Html.RouteLink()i kiedy używasz Html.ActionLink()w swoim Widoku?

Chłopak
źródło

Odpowiedzi:

78

Akcja i trasy nie muszą mieć relacji 1: 1.

ActionLink wygeneruje adres URL, aby dostać się do akcji, używając pierwszej pasującej trasy według nazwy akcji.

RouteLink wygeneruje adres URL do określonej trasy określonej przez nazwę lub wartości trasy.

Chad Moran
źródło
+1 za świetny post na blogu. Naprawdę przydatne. I pokazuje, że możliwości jest zbyt wiele. Faceci z MS powinni wdrażać tylko najszybciej. Ale ludzie raczej używają fantazyjnej lambda najwolniejszej.
Robert Koritnik
hej dzięki Ale myślę, że link jest uszkodzony, ale nie osiągnięto. proszę, ponownie podasz mi link, dziękuję
user1006544
5
czy możemy dostać przykłady?
MaylorTaylor
67

W rzeczywistości wynik obu metod jest taki sam, ale jest generowany na nieco inne sposoby:

Html.ActionLink()ułatwia szybkie generowanie ActionLink i zapewnia podstawową kontrolę nad tym, co jest renderowane. Jeśli nie masz zbyt wielu tras lub nie musisz podawać zbyt wielu lub zbyt szczegółowych informacji, to wystarczy.

Html.RouteLink()Metoda trwa nieco inne argumenty, a tym samym daje nieco bardziej szczegółową kontrolę nad tym, jakimi rzeczy są obsługiwane. Zwykle używam tej metody, gdy mój scenariusz jest trochę bardziej skomplikowany lub gdy mam bardziej szczegółową strukturę tras.
Jednym z przykładów jest niedawny projekt, w którym (ze względu na elastyczność) miałem raczej kilka różnych tras, z których wszystkie były dość proste, niż jedną złożoną, która pozwalałaby na wiele informacji. W rezultacie otrzymałem cztery lub pięć tras dla tego samego kontrolera, wszystkie z określoną akcją domyślną. Przeważnie korzystałem z RouteLinkwersji, ponieważ kiedy podałem nazwę trasy, domyślne parametry zostały wprowadzone automatycznie.

Używaj ich tak, jak chcesz i gdy mają sens dla twojego projektu. Żadna z nich nie ma żadnych zalet ani wad (nie dorównuje jej żadna inna ...).

Tomas Aschan
źródło
19

Oprócz innych podanych tutaj odpowiedzi, RouteLink jest nieco szybszy i nigdy nie może dopasować niewłaściwej trasy, ponieważ zmieniłeś tablicę routingu.

Craig Stuntz
źródło
1
Simone Chiaretta przeprowadziła tutaj analizę wydajności: codeclimber.net.nz/archive/2009/04/17/…
Dmitry
12

RouteLink przyjmuje nazwę trasy, więc jeśli nazwy tras są wiarygodne i dość unikalne, będzie to takie samo, nawet jeśli nazwa akcji, która ma zostać użyta, ulegnie zmianie. Zamiast tego łącze ActionLink prowadzi do określonej akcji określonego kontrolera. Używam obu w moich widokach, w zależności od tego, jakiego rodzaju linku szukam!

Simon Steele
źródło