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