Odpowiedzi:
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.
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 RouteLink
wersji, 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 ...).
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.
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!