Разница между Url.RouteUrl () и Url.Action () в MVC3 - PullRequest
26 голосов
/ 20 февраля 2012

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

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

Заранее спасибо.

Ответы [ 2 ]

48 голосов
/ 20 февраля 2012

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

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

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

17 голосов
/ 20 февраля 2012

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

...