gpt4 book ai didi

asp.net-mvc-3 - URL.Action 在构造 URL 时包含 id

转载 作者:行者123 更新时间:2023-12-03 11:08:29 26 4
gpt4 key购买 nike

我正在使用 ASP.Net MVC。这是我来自名为 Course 的 Controller 的代码片段:

public ActionResult List(int id)
{
var viewmodel.ShowUrl = Url.Action("Show", "Course");


...
}

public ActionResult Show(int id)
{
...
}

viewmodel.ShowUrl 选取“id”参数的任何值。所以viewmodel.ShowUrl变成了“/Course/Show/151”(id的值为151);我希望能够根据用户交互在客户端上设置 id 部分。我希望 viewmodel.ShowUrl 的值为“/Course/Show”。

这对我来说似乎是一个错误。我不是告诉 Url.Action 包含一个 id 值。它自己做。如果我想设置 id 值,那么我会做这样的事情:
var viewmodel.ShowUrl = Url.Action("Show", "Course", new {id = somevalue});

那么,如何防止 MVC 添加 id 值呢?我可以将 viewmodel.ShowUrl 硬编码为“/Course/Show”,但这似乎是一个笨拙的解决方案。谢谢。

最佳答案

我猜在你的路由中,你没有指定 id 是一个可选参数。这是示例项目中的默认路由。

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } //Parameter defaults
);

请注意包含 id = UrlParameter.Optional .没有它,你会得到你所描述的行为,因为它认为 id 是强制性的。

附带说明一下,如果您的 Show 操作并不总是具有 id,那么它应该可以为空或提供默认值。
public ActionResult Show(int? id)
public ActionResult Show(int id = 0)

否则,当您尝试加载不带 id 参数的 url 时,您将收到错误消息。

关于asp.net-mvc-3 - URL.Action 在构造 URL 时包含 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200078/

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