RedirectToAction 返回 URL 格式冗长/不正确
为什么在 ASP.NET MVC 中,当我使用 a:
return this.RedirectToAction("Index", "Page", new { pageKey = "test/ho/hum"})
或使用 MVCContrib 扩展时:
return this.RedirectToAction<PageController>(c => c.Index("test/ho/hum"))
将我的返回 URL 格式化为:http://localhost:8882/?pageKey=test%2Fho%2Fhum
而不是:http://localhost:8882/test/ho/hum
后者是我的路由访问的常用方式,查询字符串的方法可以正常工作,但会显示 pageKey,这是不可取的。仅供参考,我有一个包罗万象的路由设置,作为指向 PageController 上的 Index() 的 {*pageKey}
。
有什么想法为什么 RedirectToAction
会这样格式化吗?
Why in ASP.NET MVC is it when I use a:
return this.RedirectToAction("Index", "Page", new { pageKey = "test/ho/hum"})
or using the MVCContrib extension:
return this.RedirectToAction<PageController>(c => c.Index("test/ho/hum"))
formats my return URL as:http://localhost:8882/?pageKey=test%2Fho%2Fhum
and not:http://localhost:8882/test/ho/hum
The latter is the usual way my route is accessible, the querystring'd approach functions but reveals pageKey and is not desirable. FYI I have a catch-all route setup as {*pageKey}
pointing to Index() on PageController.
Any ideas why RedirectToAction
would format like that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在您的 Global.asax.cs 文件中,尝试添加以下路由信息:
您也许能够得到您所期望的结果。但是,这可能会在您的应用程序中产生许多错误。所以要谨慎使用。
In your Global.asax.cs file, try to add the following routing info:
you may be able to get what you expect. However, this might create a host of bugs in your application. So used with caution.
ASP.NET 路由会遍历路由列表并找到第一个匹配的路由。在这种情况下,在匹配的 {*pageKey} 路由之前必须有一个更早的路由。
尝试使用
RedirectToRoute
,您可以在其中指定路由的名称以确保只有该路由可以匹配。ASP.NET Routing goes through the list of routes and finds the first one that matches. In this case ther emust be an earlier route before your {*pageKey} route that is matching.
Try using
RedirectToRoute
, where you can specify the route's name to ensure that only that route can match.