Asp.net mvc不会采用剃刀参数

时间:2015-06-10 17:11:13

标签: c# asp.net asp.net-mvc razor

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

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

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

在我的视图中,我使用razor将参数解析为控制器,控制器应该将结果返回到这样的地址:

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

如果我在以下URL上名为Shows的其他控制器方法上执行此操作,那就是它的作用:

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

但是在GetSeatsInShow方法中,我需要放置?showId = like to snippet:

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

我的剃刀ActionLink看起来像这样:

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

似乎无法找到问题,Show方法可以正常工作,效果与无法工作的结果相同。

3 个答案:

答案 0 :(得分:3)

您有几个选择。

您当前正在将参数作为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);
}

答案 1 :(得分:1)

你可以试试这个

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

答案 2 :(得分:1)

您正在let newConstraints = NSLayoutConstraint.constraintsWithVisualFormat("|-margin-[button]-margin-|", options: 0, metrics: metrics, views: views) constraints += newConstraints showId中传递的剃刀中输入GetSeatsInShow

id