Відповіді:
Дія та маршрути не повинні мати стосунки 1: 1.
ActionLink згенерує URL-адресу, щоб дійти до дії, використовуючи перший відповідний маршрут за назвою дії.
RouteLink генерує URL для певного маршруту, визначеного або назвою, або значенням маршруту.
Насправді вихід із двох методів однаковий, але він генерується дещо по-різному:
Html.ActionLink()
полегшує швидке генерування ActionLinks та надасть вам основний контроль над тим, що відображається. Якщо у вас немає занадто багато маршрутів або не потрібно вказувати занадто багато або занадто конкретну інформацію, це зробить роботу чудово.
Html.RouteLink()
Метод приймає дещо інші аргументи, і , таким чином , дає вам трохи більш детальний контроль над тим , як речі обробляються. Я схильний використовувати цей метод, коли мій сценарій трохи складніший, або коли я маю більш детальну структуру маршруту.
Одним із прикладів є нещодавній проект, де у мене (з точки зору гнучкості) досить було декількох різних маршрутів, які були все досить простими, ніж один складний, який міг би отримати багато інформації. Таким чином, я закінчив чотири-п’ять маршрутів для того ж Контролера, усі з вказаною дією за замовчуванням. Я в основному використовував RouteLink
версію, тому що коли я вказав назву маршруту, параметри за замовчуванням вводилися автоматично.
Використовуйте їх так, як вам здається, і як вони мають сенс для вашого проекту. Насправді немає жодного з перевернутих / недоліків жодного з них (це не відповідає жодним іншим ...).
Окрім інших наведених тут відповідей, RouteLink трохи швидше, і він ніколи не може відповідати неправильному маршруту, оскільки ви змінили таблицю маршрутизації.
RouteLink приймає назву маршруту, тому якщо назви ваших маршрутів надійні та досить унікальні, то це буде те саме, навіть якщо ім'я дії, що використовується, зміниться. ActionLink посилається на певну дію певного контролера. Я використовую обидва у своїх поглядах, залежно від того, яке посилання я переживаю!