Учебники

MVC Framework — механизм маршрутизации

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.

MVC Route Config

Вы увидите следующий код внутри этого файла —

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: // имя_сервера / Продукция / Электроника