2009-05-14 3 views

ответ

72

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

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

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

+0

+1 для отличного сообщения в блоге. Очень удобно. И показывает, что возможностей слишком много. Ребята из MS должны выполнять только самые быстрые. Но люди скорее используют причудливый лямбда медленный. –

+0

эй спасибо, но я думаю, что ссылка сломана не достигнута. PLS вы еще раз предоставите мне ссылку спасибо – user1006544

+4

можем ли мы получить примеры? – MaylorTaylor

12

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

63

На самом деле, выход из этих двух методов является то же самое, но она генерируется по-разному:

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

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

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

19

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

+1

Симона Чиаретта сделала анализ производительности здесь: http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry