Яка різниця між RouteLink та ActionLink в ASP.NET MVC?


120

Я думаю, що заголовок в значній мірі підсумовує його:

Яка різниця між RouteLink()і ActionLink()в ASP.NET MVC?

тобто коли ви використовуєте Html.RouteLink()і коли ви використовуєте Html.ActionLink()у своєму представленні?

Відповіді:


78

Дія та маршрути не повинні мати стосунки 1: 1.

ActionLink згенерує URL-адресу, щоб дійти до дії, використовуючи перший відповідний маршрут за назвою дії.

RouteLink генерує URL для певного маршруту, визначеного або назвою, або значенням маршруту.


+1 за чудову публікацію в блозі. Дійсно зручно. І показує, що можливостей занадто багато. Хлопці з MS повинні впроваджувати лише найшвидший. Але люди, скоріше, використовують найменш повільну лямбда.
Роберт Коритник

Ей спасибі Але я думаю, що посилання розірвано не дійшло. pls, ви знову
надішлете

5
ми можемо отримати приклади?
MaylorTaylor

67

Насправді вихід із двох методів однаковий, але він генерується дещо по-різному:

Html.ActionLink()полегшує швидке генерування ActionLinks та надасть вам основний контроль над тим, що відображається. Якщо у вас немає занадто багато маршрутів або не потрібно вказувати занадто багато або занадто конкретну інформацію, це зробить роботу чудово.

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

Використовуйте їх так, як вам здається, і як вони мають сенс для вашого проекту. Насправді немає жодного з перевернутих / недоліків жодного з них (це не відповідає жодним іншим ...).


19

Окрім інших наведених тут відповідей, RouteLink трохи швидше, і він ніколи не може відповідати неправильному маршруту, оскільки ви змінили таблицю маршрутизації.


1
Сімоне Чіаретта зробила аналіз ефективності тут: codeclimber.net.nz/archive/2009/04/17/…
Дмитро

12

RouteLink приймає назву маршруту, тому якщо назви ваших маршрутів надійні та досить унікальні, то це буде те саме, навіть якщо ім'я дії, що використовується, зміниться. ActionLink посилається на певну дію певного контролера. Я використовую обидва у своїх поглядах, залежно від того, яке посилання я переживаю!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.