Как MVC маршрутизация понимает URL? - PullRequest
0 голосов
/ 22 февраля 2011

Global.asax.cs имеет следующий код при инициализации:

 routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

Я спрашиваю, как он узнает, что то, что он получает для "{controller}", будет именем класса Controller, который будет вызван? Где-то определены токены? если да, могу ли я перечислить их?

Если я определю дополнительные токены (например, "{lang}"), будет ли это дополнительный параметр?

(я разрабатываю пользовательский обработчик перезаписи / перенаправления URL, и мне нужно, чтобы он работал с MVC ...)

Каков наиболее практичный способ определения пользовательских шаблонов и «псевдонимов» для URL?

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

@ TDaver Если я определю дополнительные токены (например, "{lang}"), будет ли это дополнительный параметр?

да.Например, если вы определите параметр типа lang, он его обнаружит.Подумайте так, это будет поле строки запроса с именем lang страницы.и вы можете создать маршрут для pretyy URL.Как показано ниже:

 routes.MapRoute(
                "Default", // Route name
                "{lang}/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

, поэтому URL будет похож на;http://example.com/en/home/about

Кроме того, наиболее важной частью маршрутизации является понимание того, что маршруты будут выбраны по порядку.например, если у вас есть несколько маршрутов, соответствующих вашему текущему запросу, MVC Framework выберет первый маршрут.

Я рекомендую вам взглянуть на Phil haccked's RouteDebugger

Также вы можете создавать ограничения маршрута для расширенных параметров маршрутизации.

1 голос
/ 22 февраля 2011

В среде выполнения Mvc жестко заданы контроллер и токены действий.Кроме того, есть и «область», но это все.

...