Как выбрать маршрут для генерации исходящего URL в ASP.NET MVC? - PullRequest
0 голосов
/ 22 марта 2011

Добрый день!

Я использую ASP.NET MVC 2 и T4MVC, и кажется, что происходит какая-то магия кода

Когда я добавляю это в таблицу маршрутов:

routes.MapRoute(
    "Login",
    "login/",
    MVC.Profile.Login()
);

Как фреймворк узнает, что я хочу применить это правило, когда пишу что-то подобное в представлении для генерации исходящего URL:

<%: Url.Action(MVC.Profile.Login() %>

Что если у меня несколько разных правил (с разными параметрами) для одной и той же пары контроллер / действие? Какой из них будет выбран? Есть ли где-нибудь хорошее описание этого поведения?

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

Ответы [ 3 ]

1 голос
/ 23 марта 2011

Что бы я предложил, чтобы помочь вам понять, как эта работа заключается в том, чтобы отделить магию, которую делает T4MVC от того, что делает сам MVC под прикрытием.

Когда вы пишете это с помощью T4MVC:

routes.MapRoute(
    "Login",
    "login/",
    MVC.Profile.Login()
);

Это эквивалентно написанию этого с прямым MVC:

routes.MapRoute(
    "Login",
    "login/",
    new { controller = "Profile", action = "Login" }
);

И в представлении:

Url.Action(MVC.Profile.Login())

То же, что

Url.Action("Login", "Profile")

T4MVC даетВы выигрываете от сильной типизации / intellisense, но в конце концов то же самое, что и с прямым MVC.

Надеюсь, это поможет немного прояснить ситуацию:)

1 голос
/ 22 марта 2011

Соответствует шаблонам маршрутов в порядке их определения.Вот почему у вас есть шаблон по умолчанию в качестве последнего.Как только он находит соответствующий шаблон, он перестает искать.

Редактировать

Параметры игнорируются при сопоставлении маршрута.После выбора метода контроллера mvc использует привязку модели для назначения параметров переменным метода.

Если вы можете объяснить, какой тип структуры URL вы хотите использовать, мы, вероятно, сможем вам помочь больше.

0 голосов
/ 22 марта 2011

Ваш пример не является допустимым MVC, вы обычно передаете имя контроллера, действие и любые другие параметры, тогда механизм маршрутизации будет использовать всю эту информацию, чтобы определить, какой маршрут использовать, чем больше маршрутов вы определили, тем больше информации вероятно, потребуется определить тот, которому ВЫ хотите соответствовать

...