Asp.net mvc MVC Route Map在Html.RenderAction上出现异常:Route表中没有与提供的值匹配的路由
我使用ASP.NET MVC 5,这是除主页/索引外所有操作的路线图: 对于第一页:Home/Index,我不想使用{randomNumber} 因此,我认为第一个解决方案是:Asp.net mvc MVC Route Map在Html.RenderAction上出现异常:Route表中没有与提供的值匹配的路由,asp.net-mvc,routing,asp.net-mvc-5,Asp.net Mvc,Routing,Asp.net Mvc 5,我使用ASP.NET MVC 5,这是除主页/索引外所有操作的路线图: 对于第一页:Home/Index,我不想使用{randomNumber} 因此,我认为第一个解决方案是: routes.MapRoute( name: "Default", url: "{controller}/{action}", defaults: new { controller = "Home", action =
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
这个路由图解决了我的问题,但导致了另一个问题,那就是:客户端可以在没有{randomNumber}的情况下访问其他操作,但我只希望访问主控制器的索引操作而不使用随机数
另一种解决办法是:
routes.MapRoute(
name: "Default",
url: "Home/Index",
defaults: new { controller = "Home", action = "Index" }
);
但是有了这个映射,我不能用根url访问Home/index,我需要用根url访问Home/index,如下所示:www.mydomainaddress.com
最后我发现:
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
但是我得到了一个例外:route表中没有与提供的值匹配的路由。在这一行的index.cshtml文件上:@{Html.RenderActionArchiveList,Home;}
我不知道我添加的路线图和渲染助手之间的关系
但如果我同时添加以下两个路线图,一切都会正常:
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "HomeActions",
url: "Home/{action}",
defaults: new { controller = "Home" }
);
但我不能添加第二条地图路线,因为你知道我需要使用随机数访问所有操作
我无法理解添加默认贴图时发生了什么,以及与RenderAction helper有什么关系
有人知道这件事吗?有什么建议吗?我已经在MVC5中使用了这种语法,它可以工作:
routes.MapRoute(
name: "HomePage",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
此语法允许您使用www.mydomainaddress.com访问您的主页,但如果您尝试使用www.mydomainaddress.com/home/index,则无法使用此语法
我不明白为什么它不适合你。您可以尝试重新调整顺序或MapRoutes定义,将主页路由放置在randomNumber路由之后
我看到了你修改过的问题。我知道您希望能够对home controller使用任何操作,但不希望对HomeController使用随机数
这可能更适合您,也可以为主控制器禁用randomNumber路由:
routes.MapRoute(
name: "HomePage",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "HomeActions",
url: "Home/{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "randomNumber",
url: "{controller}/{randomNumber}/{action}",
defaults: new { },
constraints: new { randomNumber = @"\d+", controller = @"^((?!Home).)*$" }
);
我得到了这个例外:route表中没有任何路由与提供的值匹配。你能发布你的整个RouteConfig类吗?我用你的答案更新问题,在home Controller中访问的其他操作没有随机数,我在问题中提到过我不想访问。
routes.MapRoute(
name: "HomePage",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "HomeActions",
url: "Home/{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "randomNumber",
url: "{controller}/{randomNumber}/{action}",
defaults: new { },
constraints: new { randomNumber = @"\d+", controller = @"^((?!Home).)*$" }
);