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

Маршрутизация ASP.NET MVC позволяет использовать 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-адресе Products - это первый сегмент, а Phone - второй сегмент, который может быть выражен в следующем формате:

{controller}/{action}

Платформа MVC автоматически рассматривает первый сегмент как имя контроллера, а второй сегмент как одно из действий внутри этого контроллера.

Note- Если имя вашего контроллера - ProductsController, вы должны упомянуть только продукты в URL-адресе маршрутизации. Платформа MVC автоматически распознает суффикс Controller.

Создать простой маршрут

Маршруты определены в файле 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, которая устанавливает контроллер по умолчанию и его действие (метод внутри класса контроллера).

Чтобы изменить приведенное выше сопоставление по умолчанию в соответствии с нашим примером, измените следующую строку кода -

defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }

Этот параметр выберет ProductsController и вызовет внутри него метод Phone. Точно так же, если у вас есть другой метод, такой как Electronics, внутри ProductsController, URL-адрес для него будет -

http://servername/Products/Electronics