【发布时间】:2016-01-06 19:34:51
【问题描述】:
据我所知,我们可以在 asp.net mvc 中使用 MapRoute 和 MapPageRoute 进行路由。我正在使用 MapRoute 进行路由,但效果不佳。如果我删除第一条路线,那么第二条路线运行良好,我希望同时使用它们。我在尝试做不可能的事吗?还是只是错过了谜题?
我的 Global.asax 文件:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "first",
url: "{lang}/{controller}/{action}",
defaults: new { lang= "en", controller = "", action = "" }
);
routes.MapRoute(
name: "category",
url: "{lang}/{category}/{controller}/{action}",
defaults: new { lang= "en", menu="", controller = "", action = "", category="" }
);
在 *.aspx 文件中:
NavigateUrl="<%$RouteUrl:controller=consulting, action=cars, category=service%>"
我的 URL 输出: en/consulting/cars?category=service
预期输出: en/service/consulting/cars
你有什么想法吗?
【问题讨论】:
-
因为您的
NavigateUrl匹配第一条路线并停止搜索任何其他路线。交换订单。 -
好的,那我还有一个问题。我们有 route: "{lang}/{controller}/{action}" 但我们有不同的 aspx 或 ascx 页面。我如何添加 {pagename} 以使用 NavigateUrl="" 路由,不同的页面位于不同的文件夹中。
标签: asp.net-mvc webforms asp.net-mvc-routing