Asp.net mvc 自定义ASP.NET MVC映射路由

Asp.net mvc 自定义ASP.NET MVC映射路由,asp.net-mvc,maproute,Asp.net Mvc,Maproute,默认ASP.NET MVC项目有一个MapRoute,如 routes.MapRoute( "Default", "{controller}/", new { controller = "Home", action = "Index" } ); routes.MapRoute( "Sitemap", "{controller}/

默认ASP.NET MVC项目有一个MapRoute,如

routes.MapRoute(
            "Default",
            "{controller}/",
            new { controller = "Home", action = "Index" }
            );
            routes.MapRoute(
            "Sitemap",
            "{controller}/{action}",
            new { controller = "Sitemap", action = "ShortMap" }
        );
像这样的URL是等价的:www.mysite.comwww.mysite.com/homewww.mysite.com/home/index

但是如果我想用地图路线

routes.MapRoute(
            "Default",
            "{controller}/",
            new { controller = "Home", action = "Index" }
            );
            routes.MapRoute(
            "Sitemap",
            "{controller}/{action}",
            new { controller = "Sitemap", action = "ShortMap" }
        );
并测试urlwww.mysite.com/sitemap我收到错误404,但我希望它的工作方式类似于www.mysite.com/sitemap/shortmap


如何正确编写此MapRoute?

我发现有助于解决地图路线问题的最佳工具是Phil Haack的路线工具。这是一个很好的方式来查看哪些路线以及如何使用您的路线


当您尝试/sitemap/action时会发生什么情况?您可能应该正确拼写controller一词


您将其拼写为
contoller

请确保视图“ShortMap”确实存在。我知道,这很简单,但也发生过几次。

只是问题中的错误,而不是代码中的错误。我通过以下代码解决了这个问题:routes.maprote(“MainPage”,new{controller=“Home”,action=“Index”});MapRoute(“站点地图”、“站点地图/{action}”、新的{controller=“Sitemap”、action=“ShortMap”});现在www.mysite.com/sitemap和www.mysite.com/sitemap/shortmap是等效的。由于默认的MapRoute影响,它无法工作。