RedirectToAction返回URL格式冗长/错误

时间:2010-01-13 02:04:59

标签: c# .net asp.net-mvc asp.net-mvc-routing

为什么在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会像那样格式化的任何想法?

2 个答案:

答案 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= "" }
        );

你可能会得到你所期望的。但是,这可能会在您的应用程序中产生大量错误。所以谨慎使用。