Маршруты.Карта путаницы

Я знаю, что это общий подход:

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

Но если я попробую вот так:

 routes.MapRoute
    (
          name: "Defaults",
          url: "Home/Index/1"
    );

Это не даст никакой ошибки при запуске проекта. я имею Controller = HomeAction = Index() в моем HomeController но почему это дает ошибку, пока я печатаю это http://localhost:1702/Home/Index/1в моем браузере?

Ошибка: Совпадающий маршрут не включает значение маршрута "контроллер", которое является обязательным.

Какая часть является обязательной в маршрутизации? Другой вопрос: зачем нам Route Name?? Если я дам name=""работает нормально, даже если существует более одного маршрута name=""

2 ответа

Ты нуждаешься в этом:

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

URL-адрес, чтобы определить структуру URL-адреса для конечного пользователя. Вы даже можете изменить его на

url: "{action}/{controller}/{id}"

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

Другие вопросы по тегам