ASP.NET MVC изменить маршрут по умолчанию
Я хочу, чтобы приложение ASP.NET MVC по умолчанию перенаправляло на действие индекса контроллера продукта. Поэтому я изменил RouteConfig на
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Product", action = "Index", id = UrlParameter.Optional });
}
Но все равно я получаю ошибку
The view 'Index' or its master was not found or no view engine supports the searched locations.
The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Home/Index.cshtml
~/Views/Home/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
Я отладил приложение и проверил раздел "Настройки по умолчанию" третьего маршрута. Но это все еще говорит
{[controller, Home]}
Кто-нибудь может сказать мне, почему?
3 ответа
Попробуйте это, это сработало для меня. Убедитесь, что маршрут по умолчанию находится в нижней части таблицы в списке маршрутов. Порядок имеет значение, когда речь идет о таблицах маршрутизации ASP.NET MVC.
routes.MapRoute(
"Default",
"{id}",
new { controller = "Product", action = "Index", id = UrlParameter.Optional }
);
также проверьте этот инструмент, это будет полезно для вас
Вы не добавили ни одного представления для Контроллера продукта. Добавьте представления для этого, и это будет работать как ожидалось.
Попробуйте это, он переопределит маршрут по умолчанию и будет использовать ваш.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"DefaultApi", // Route name
"{Controller}/{action}/{id}", // URL with parameters
new { controller = "Product", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }// Parameter defaults
);
}