ASP.NET MVC Routing позволяет использовать URL-адреса, которые описывают действия пользователя и более понятны пользователям. В то же время маршрутизация может использоваться для сокрытия данных, которые не предназначены для показа конечному пользователю.
Например, в приложении, которое не использует маршрутизацию, пользователю будет показан URL-адрес в виде http: //myapplication/Users.aspx? Id = 1, который будет соответствовать файлу Users.aspx внутри пути myapplication и идентификатору отправки будет присвоено значение 1 Как правило, мы не хотели бы показывать такие имена файлов нашему конечному пользователю.
Для обработки URL-адресов MVC платформа ASP.NET использует систему маршрутизации, которая позволяет вам создавать любые шаблоны URL-адресов по вашему желанию и выражать их в четкой и сжатой форме. Каждый маршрут в MVC содержит определенный шаблон URL. Этот шаблон URL сравнивается с URL входящего запроса, и если URL соответствует этому шаблону, он используется механизмом маршрутизации для дальнейшей обработки запроса.
Формат URL маршрутизации MVC
Чтобы понять маршрутизацию MVC, рассмотрите следующий URL —
http://servername/Products/Phones
В приведенном выше URL «Продукты» — это первый сегмент, а «Телефон» — это второй сегмент, который можно выразить в следующем формате:
{controller}/{action}
Инфраструктура MVC автоматически рассматривает первый сегмент как имя контроллера, а второй сегмент как одно из действий внутри этого контроллера.
Примечание. Если имя вашего контроллера — ProductsController, вы будете указывать продукты только в URL-адресе маршрутизации. Инфраструктура MVC автоматически распознает суффикс контроллера.
Создать простой маршрут
Маршруты определены в файле RouteConfig.cs, который находится в папке проекта App_Start.
Вы увидите следующий код внутри этого файла —
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
Этот метод RegisterRoutes вызывается Global.ascx при запуске приложения. Метод Application_Start в Global.ascx вызывает эту функцию MapRoute, которая устанавливает контроллер по умолчанию и его действие (метод внутри класса Controller).
Чтобы изменить приведенное выше отображение по умолчанию в соответствии с нашим примером, измените следующую строку кода:
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
Этот параметр выберет ProductsController и вызовет внутри него метод Phone. Точно так же, если у вас есть другой метод, такой как Электроника внутри ProductsController, URL для него будет:
Http: // имя_сервера / Продукция / Электроника