gpt4 book ai didi

c# - Url.Action 从哪里获取这些值?

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

我正在尝试使用 Url.Action 创建指向以下 GET 操作的链接:

public class FooController : Controller
{
[HttpGet]
[Route("Foo/Apply/BarDetails/Part/{id}")]
public IActionResult BarDetails(int id)
{
}
}

在我看来,我正在创建一个 URL

Url.Action("BarDetails", "Foo", new {id = 1})

然而,这会生成 URL Foo/Apply/BarDetails/Part/10?id=1,这绝对不是我想要的!删除 values 参数只会删除 URL 的查询字符串部分。我在启动时注册的唯一路线是

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

我查看了 ASP.NET Core 源代码,我怀疑 URL 的“10”部分来自某处的 "1"+ "0" 操作,因为路由代码分为 2 个以上的 repos,很难理解。有谁知道这个 URL 的最后一部分是如何生成的,以及我如何修复它以匹配路由值中提供的 id

最佳答案

事实证明,路由在 MVC5(编写此 Controller 的地方)和 ASP.NET Core 2 之间发生了变化。这也与我构建 Controller 的方式有关。基本上在某些时候,可能的路由列表会按 URL 排序,因此 Foo/Apply/BarDetails/Part/10 会被排序到列表的顶部,因为它与请求的 URL 匹配,它会被返回.有关完整详细信息,请参阅 this GitHub issue .

关于c# - Url.Action 从哪里获取这些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659331/

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