gpt4 book ai didi

c# - 在 View 中生成新 anchor 时,我可以强制 T4MVC 不要从当前 View 的 URL 中获取参数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:59 25 4
gpt4 key购买 nike

我有一个 ASP.Net MVC4 应用程序,我在其中使用 T4MVC 在我的 View 中方便地生成 anchor 元素。像这样:

@Html.ActionLink("Application 1", MVC.Application.Overview(1))

我的 RouteConfig 中有两条路线:

routes.MapRouteLowercase(
name: "DefaultWithId",
url: "{controller}/{id}/{action}/{subaction}",
constraints: new { id = @"\d+" },
defaults: new { subaction = UrlParameter.Optional }
);

routes.MapRouteLowercase(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);

我有一个应用程序 Controller ,其中一些操作需要特定应用程序的 ID,而其他操作不需要 Id,因为它们不是特定于应用程序的(例如显示所有应用程序的页面)。

路由在大多数情况下运行良好,生成如下链接:

/application/index        <-- Overview of all applications
/application/1/overview <-- Overview of specific application

当我在 /application/1/overview 上并尝试创建一个返回到索引操作的 anchor 元素时,问题就出现了。生成的链接然后以 /application/1/index 结尾,这不是我们想要的行为。

如果我错了请纠正我,但我相信这里发生的事情是 T4MVC 识别出当前页面的路由中有一个可用的应用程序 ID 并使用该 ID,以便它可以利用DefaultWithId 路由,而不是 Default,用于生成指向索引操作的 URL。

我当然可以强制一个合适的 anchor 做这样的事情:

@Html.RouteLink(
"All applications",
"Default",
new { controller = "Application", action = "Index"})

但这感觉就像是在治标不治本。我还失去了对所有 anchor 进行编译时检查的好处,所以我宁愿做其他事情。

在 View 中生成 anchor 时,是否有办法强制 T4MVC 忽略当前页面的参数?或者我可以通过某种方式修改我的路线以避免这种行为吗?

最佳答案

“T4MVC 识别出当前页面的路由中有可用的应用程序 ID 并使用该 ID,以便它可以使用 DefaultWithId 路由而不是 Default 来生成指向索引的 URL - Action ”

T4MVC 没有这样的智能,而是内置在 MVC 路由系统中。但许多 T4MVC 用户以前遇到过这种情况。各种引用:

关于c# - 在 View 中生成新 anchor 时,我可以强制 T4MVC 不要从当前 View 的 URL 中获取参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307556/

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