RedirectToAction 返回 URL 格式冗长/不正确

发布于 2024-08-17 07:08:30 字数 614 浏览 6 评论 0原文

为什么在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

守不住的情 2024-08-24 07:08:30

在您的 Global.asax.cs 文件中,尝试添加以下路由信息:

  routes.MapRoute(
            "my customized routing",
            "Index/Page/{*MyPageKey}",
            new { controller = "Index", Action = "List", MyPageKey= "" }
        );

您也许能够得到您所期望的结果。但是,这可能会在您的应用程序中产生许多错误。所以要谨慎使用。

In your Global.asax.cs file, try to add the following routing info:

  routes.MapRoute(
            "my customized routing",
            "Index/Page/{*MyPageKey}",
            new { controller = "Index", Action = "List", MyPageKey= "" }
        );

you may be able to get what you expect. However, this might create a host of bugs in your application. So used with caution.

世界等同你 2024-08-24 07:08:30

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文