Asp.net MVC 不会采用 Razor 参数

本文关键字:Razor 参数 net MVC Asp | 更新日期: 2023-09-27 17:55:25

我正在开发一个学校项目,到目前为止它已经做得很好,但问题终于来了。

我的家庭控制器中有此方法:

    [HttpPost]
    public ActionResult GetSeatsInShow(int showId)
    {
        ...
        return View(realSeatList);
    }

在我看来,我使用 razor 将参数解析为控制器,控制器应该以如下地址返回结果:

http://localhost:1499/Home/GetSeatsInShow/236

如果我在以下 URL 上名为"显示"的另一个控制器方法上执行此操作,这就是它的作用:

http://localhost:1499/Home/Shows/1

但是在 GetSeatsInShow 方法上,我需要将 ?showId= 像片段放在下面:

http://localhost:1499/Home/GetSeatsInShow/?showId=236

我的剃须刀动作链接看起来像这样:

@Html.ActionLink("Vælg", "GetSeatsInShow", new { id = item.Id })

似乎在一段时间后找不到问题,Show 方法工作正常,结果与不起作用的方法相同。

Asp.net MVC 不会采用 Razor 参数

你有几个选择。

您当前将参数作为 id 传递,而不是 showId,而您的控制器需要一个名为 showId 的参数。 因此,通过更新匿名类型,可以传递正确的参数名称。

@Html.ActionLink("Vælg", "GetSeatsInShow", new {  showId = item.Id })

或者,您可以简单地在查询字符串中传递"id"并允许默认 MVC 绑定工作,如果您更新控制器,这很神奇:

@Html.ActionLink("Vælg", "GetSeatsInShow", new { id = item.Id })
[HttpPost]
public ActionResult GetSeatsInShow(int id)
{
    ...
    return View(realSeatList);
}
你可以

试试这个

@Html.ActionLink("Vælg", "GetSeatsInShow", new { id = item.Id, showId = item.Id })

您正在GetSeatsInShow中输入showId,并且在您传递的剃刀中输入id

[HttpPost]
public ActionResult GetSeatsInShow(int id)
{
    ...
    return View(realSeatList);
}