ASP.NET MVC: действие по умолчанию RouteConfig - PullRequest
0 голосов
/ 29 июня 2018

Я новичок в ASP.NET MVC и слежу за онлайн-руководством по созданию примера проекта перед тем, как создать производственный проект для моей стажировки.

В этом проекте мы следуем основным лесам MVC и создаем два разных контроллера. Первый контроллер - это HomeController по умолчанию, который отображает страницу с указанием URL:

  • example.com
  • example.com / дом
  • example.com / дом / индекс

Я сделал вывод, что это потому, что в файле RouteConfig аргумент defaults: содержит controller="home", "action="index"

Однако, после создания моего собственного контроллера и сопоставления маршрута с ним, используя routes.MapRoute в том же формате, что и HomeController:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

        routes.MapRoute(
            name: "Process",
            url: "Process/{action}/{id}",
            defaults: new { controller = "Process", action = "List", id = UrlParameter.Optional });

Кажется, что новый маршрут будет работать, только если я укажу example.com/process/list, а не по умолчанию example.com/process/list, если "/ list" опущен.

Есть ли что-то особенное в обычном шаблоне HomeController, которое определяет ту же страницу, возвращаемую по разным URL-адресам?

1 Ответ

0 голосов
/ 29 июня 2018

Это происходит из-за порядка ваших маршрутов. example.com/process соответствует вашему первому маршруту («По умолчанию»), поэтому он получает действие «Индекс» по умолчанию. Вы можете поменять местами регистрации маршрутов, затем он выберет «Обрабатывать» маршрут с помощью действия «Список». Прочитайте эту статью , чтобы лучше понять, как работает маршрутизация

...