В чем разница между RouteLink и ActionLink в ASP.NET MVC?

Я думаю, что название в значительной степени резюмирует это:

В чем разница между RouteLink() и ActionLink() в ASP.NET MVC?

т.е. когда вы используете Html.RouteLink(), а когда Html.ActionLink() в своем представлении?


person Guy    schedule 14.05.2009    source источник


Ответы (4)


Действие и Маршруты не обязательно должны иметь отношение 1: 1.

ActionLink сгенерирует URL-адрес для перехода к действию, используя первый совпадающий маршрут по имени действия.

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

person Chad Moran    schedule 14.05.2009
comment
+1 за отличный пост в блоге. Действительно удобно. И показывает, что возможностей слишком много. Ребята из MS должны реализовывать только самые быстрые. Но люди предпочитают использовать самую медленную причудливую лямбду. - person Robert Koritnik; 22.10.2009
comment
привет, спасибо Но я думаю, что ссылка не работает, не дошла. пожалуйста, вы снова дадите мне ссылку, спасибо - person user1006544; 23.11.2011

На самом деле результаты двух методов одинаковы, но генерируются несколько разными способами:

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

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

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

person Tomas Aschan    schedule 14.05.2009

В дополнение к другим приведенным здесь ответам RouteLink немного быстрее и никогда не может сопоставить неправильный маршрут, потому что вы изменили свою таблицу маршрутизации.

person Craig Stuntz    schedule 14.05.2009
comment
Симоне Кьяретта провела здесь некоторый анализ производительности: codeclimber.net.nz/archive/2009/04/17/ - person Dmitry; 10.09.2012

RouteLink принимает имя маршрута, поэтому, если имена ваших маршрутов надежны и достаточно уникальны, они будут такими же, даже если имя используемого действия изменится. ActionLink вместо этого ссылается на конкретное действие конкретного контроллера. Я использую оба в своих представлениях, в зависимости от того, какая ссылка мне нужна!

person Simon Steele    schedule 14.05.2009