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
        );
    }
Другие вопросы по тегам