Подтвердить что ты не робот

Разница между Url.RouteUrl() и Url.Action() в MVC3

Я нахожусь в процессе динамического создания URL-адреса на моей странице cshtml. В чем разница между Url.RouteUrl() и Url.Action()?

Какой из них я должен использовать для создания URL-адреса, и какая разница имеет значение с точки зрения реализации?

Спасибо заранее.

4b9b3361

Ответ 1

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

Если вы хотите убедиться, что URL-адрес определенного маршрута будет использован, вам нужно позвонить RouteUrl, передав это имя маршрута. Названия маршрутов уникальны и четко идентифицируют маршрут.

Еще одно отличие состоит в том, что Action является специфичным для MVC (он использует имена контроллеров и действий), а RouteUrl является общим и может использоваться без MVC (вы можете иметь маршрутизацию в WebForms).

Ответ 2

Url.RouteUrl позволяет указать конкретный маршрут по имени. Это заставит использовать этот маршрут. Url.Action будет просто выбирать первый маршрут, соответствующий критериям.