gpt4 book ai didi

c# - MVC 3 路由和操作链接不遵循预期的上下文路由

转载 作者:行者123 更新时间:2023-11-30 20:06:15 27 4
gpt4 key购买 nike

我正在尝试做一个自定义路由,这样我就可以在我的应用程序中为一个 url 加上一个选定的字符串前缀,然后根据它进行一些处理。我遇到的问题是,生成的操作链接没有根据它所在的 url 进行上下文化。

路线:

routes.MapRoute(
"TestRoute",
"TEST/{controller}/{action}/{id}",
new { controller = "Space", action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Space", action = "Index", id = UrlParameter.Optional });

导航到 TEST/Space/Index 和 Space/Index 一样有效,但我需要解决的奇怪问题是通过 ActionLink 生成的链接不服从它们加载的上下文,至少对于 {controller }/{action}/{id} 默认路由。在 TEST/Space/Index 下加载的页面正确列出了链接,但是当加载/Space/Index 时,它们都引用了调用 url 没有的 TEST/路由。这是默认行为吗?有没有办法让这些链接在适当的上下文中生成?

编辑:

我第一次看到它是在没有 TEST/的 Html.BeginForm 中

Html.BeginForm("ToTheMoon", "Space", FormMethod.Post)

将链接呈现为 TEST/Space/ToTheMoon

但它也出现在链接中:

@Html.ActionLink("Take Me To The Space Port", "SpacePort", "Space")

呈现 TEST/Space/SpacePort

最佳答案

我找到了一些解决这个问题的方法,这样上下文就不会丢失。这是我为使它起作用所做的工作。

TestRoute 对此的更改:

routes.MapRoute(
"TestRoute",
"{path}/{controller}/{action}/{id}",
new { controller = "Space", action = "Index", id = UrlParameter.Optional },
new { path = @"TEST" },
new string[] { "The.Namespace" });

在路径上设置约束并将其从路由中删除使该路由有效。现在我可以点击/TEST/Space/Index 并且我从 ActionLink 生成的所有链接都按预期运行。同样在相关问题上,我最终在 map 路由中添加了命名空间规范,因为开发环境要求在那里正确地将事物路由到 TEST 路径。

我找到的一些信息是 on this page .

关于c# - MVC 3 路由和操作链接不遵循预期的上下文路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com