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