ASP.由于路由原因,MVC3没有正确的索引页



我有这些路由:

 routes.MapRoute(
                 "ActionOnly",
                 "{action}",
                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                 new { action = "Klub|Historie" });
            routes.MapRoute(
                "Administrace", // Route name
                "Administrace/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Administrace", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
            // Hrac/Jmeno_hrace
            routes.MapRoute(
                 "Hrac",
                 "Hrac/{name}",
                 new { Controller = "Hrac", Action = "Name" }
            );

            // pro aktivaci uzivatele který se registroval, ale jeste nepotvrdil email
            routes.MapRoute(
                "Activate",
                "Account/Activate/{username}/{key}",
                new { controller = "Account", action = "Activate", username = UrlParameter.Optional, key = UrlParameter.Optional }
            );
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

为什么@Html.ActionLink("Domů", "Index", "Home")正在创建website.com/Administrace/Home而不是website.com/Home/index,我该如何修复它?

您的Administrace路由正在吞噬所有控制器。

您应该将其更改为硬编码控制器名称:

routes.MapRoute(
    "Administrace", // Route name
    "Administrace/Administrace/{action}/{id}", // URL with parameters
    new { controller = "Administrace", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

如果你想让这个路由对多个控制器工作,你应该把它替换成一个区域(或者只是添加一个约束)。

使用@Html。RouteLink改为路由名称为default

链接到一些可能有帮助的东西:ASP中的RouteLink和ActionLink有什么区别?净MVC吗?