Если вы добавите в свой маршрут новый маршрут, например:
routes.MapRoute(
"Detailed", // Route name
"{contoller}/{id}", // URL with parameters
new { controller = "Orders", action = "Details", id = UrlParameter.Optional } // Parameter defaults
);
Это бы сработало, но вы многое сломаете, например, URL [site] / Home / Search приведет к:
System.ArgumentException: словарь параметров содержит пустую запись для параметра 'id' необнуляемого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Details (Int32)' в 'MvcApplication3.Controllers. OrdersController.
Причина этого в том, что / Home / Search соответствует маршруту {controller}/{id}
.
Другой, похожий способ решить эту проблему:
routes.MapRoute(
"Detailed", // Route name
"order/{id}", // URL with parameters
new { controller = "Orders", action = "Details", id = UrlParameter.Optional } // Parameter defaults
);
Убедитесь, что статическая часть маршрута, order , не совпадает с именем вашего фактического контроллера заказов, в противном случае у вас возникнет та же проблема, отображая [url] / orders недоступно с System.ArgumentException вместо вызова метода Index () (маршрут по умолчанию)
Отрицательной стороной этого подхода является то, что вам нужно будет делать это для каждого контроллера, где вы хотели бы иметь такую функциональность.