4 ответов:
действие и маршруты не должны иметь отношения 1:1.
ActionLink будет генерировать URL-адрес, чтобы добраться до действия, используя первый соответствующий маршрут по имени действия.
RouteLink будет генерировать URL-адрес для определенного маршрута, определенного по имени или значениям маршрута.
на самом деле, выход из двух методов одинаковый, но он генерируется несколько по-разному:
Html.ActionLink()позволяет легко создавать ActionLinks быстро, и даст вам основной контроль над тем, что визуализируется. Если у вас не слишком много маршрутов, или не нужно давать слишком много или слишком конкретную информацию, это будет делать работу просто отлично.The
Html.RouteLink()метод принимает несколько другие аргументы, и таким образом дает вам немного более детальный контроль над тем, как вещи обрабатываются. Я склонен использовать этот метод, когда мой сценарий немного сложнее, или когда у меня есть более подробная структура маршрута.
Одним из примеров является недавний проект, в котором я (для гибкости) скорее имел несколько разных маршрутов, которые были довольно простыми, чем один сложный, который позволил бы получить много информации. Таким образом, я получил четыре или пять маршрутов для одного и того же контроллера, все с указанным действием по умолчанию. Я в основном использовал элементRouteLinkверсия, потому что когда я указал название маршрута, параметры по умолчанию были введены автоматически.использовать их, как вы чувствуете, и как они имеют смысл для вашего проекта. Там действительно нет вверх / вниз ни к одному из них (что не соответствует некоторым другим...).
в дополнение к другим ответам, приведенным здесь, RouteLink немного быстрее и никогда не может соответствовать неправильному маршруту, потому что вы изменили таблицу маршрутизации.
RouteLink принимает имя маршрута, поэтому, если ваши имена маршрутов надежны и довольно уникальны, это будет то же самое, даже если имя действия, которое будет использоваться, изменится. Вместо этого ActionLink ссылается на конкретное действие конкретного контроллера. Я использую оба в своих представлениях, в зависимости от того, какую ссылку я ищу!
Comments