这实际上是How Can I Stop ASP.Net MVC Html.ActionLink From Using Existing Route Values?
的副本根据@Eilon -
因为一旦你使参数段无效,那么它之后的所有参数段都将失效。
就我而言,我有两个Action链接,链接到不同控制器上的操作。
这两个操作都有一个可选的页面参数。
路线配置如下:
// blog routes
routes.MapRoute(
"",
"blog/page{page}",
new { controller = "Blog", action = "Index" },
new { page = @"\d+" }
);
routes.MapRoute(
"",
"blog/{id}",
new { controller = "Blog", action = "Post" }
);
routes.MapRoute(
"",
"blog",
new { controller = "Blog", action = "Index" }
);
// project routes
routes.MapRoute(
"",
"projects/page{page}",
new { controller = "Project", action = "Index" },
new { page = @"\d+" }
);
routes.MapRoute(
"",
"projects/{id}",
new { controller = "Project", action = "Project" }
);
routes.MapRoute(
"",
"projects",
new { controller = "Project", action = "Index" }
);
问题是,如果我导航到项目的第2页,然后点击博客链接,我将被定向到/ blog / page2。
现在根据以上所述,如果参数段无效(在这种情况下控制器和动作都不同),则页面参数应该无效。如果使用标准的ActionLink重载指定了控制器和操作,它是否有效,或者仅当它们通过RouteValueDictionary传入时才适用?
目前,我必须创建一个自定义ActionLink来从RouteData中删除“page”参数。
谢谢, 本
答案 0 :(得分:1)
答案 1 :(得分:0)
可能不是理想的。但你可以:Html.ActionLink("action", "controller", new { page = "" })
似乎比创建自定义帮助程序要好一些。 HTH