为什么在ASP.NET MVC中使用的是:
return this.RedirectToAction("Index", "Page", new { pageKey = "test/ho/hum"})
或使用MVCContrib扩展程序:
return this.RedirectToAction<PageController>(c => c.Index("test/ho/hum"))
将我的返回网址格式化为:
http://localhost:8882/?pageKey=test%2Fho%2Fhum
而不是:
http://localhost:8882/test/ho/hum
后者是我的路由可访问的常用方式,查询字符串的方法功能但显示pageKey并且不可取。仅供参考我有一个全能路由设置,{*pageKey}
指向PageController上的Index()。
为什么RedirectToAction
会像那样格式化的任何想法?
答案 0 :(得分:0)
ASP.NET路由遍历路由列表并找到匹配的第一个路由。在这种情况下,热必须是匹配前的{* pageKey}路由之前的路线。
尝试使用RedirectToRoute
,您可以在其中指定路线的名称,以确保只有该路线可以匹配。
答案 1 :(得分:0)
在Global.asax.cs文件中,尝试添加以下路由信息:
routes.MapRoute(
"my customized routing",
"Index/Page/{*MyPageKey}",
new { controller = "Index", Action = "List", MyPageKey= "" }
);
你可能会得到你所期望的。但是,这可能会在您的应用程序中产生大量错误。所以谨慎使用。