MVC:使用 Bootstrap 按钮将参数发送到控制器中的操作

MVC: Send parameters to Action in Controller with Bootstrap button

查看:

@using (Html.BeginForm("UpdateMaterial", "MyController", FormMethod.Post, Model.MaterialId))
    {
    @Html.AntiForgeryToken()
    <input type="submit" class="btn btn-primary custom" value="Derivate Material" />
    }

控制器:

[HttpPost]
public ActionResult UpdateMaterial(int? matId)
        {
            if (matId == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
        //do something here
        }

我发送的Id总是空的。我该如何更改?

您的 Model.MaterialId 应该是一个表单元素:

@using (Html.BeginForm("UpdateMaterial", "MyController", FormMethod.Post))
{
     @Html.HiddenFor(model => model.MaterialId)

     @Html.AntiForgeryToken()
     <input type="submit" class="btn btn-primary custom" value="Derivate Material" />
}

此外,您应该更改操作定义并使其接受模型的类型,而不是 int?:

[HttpPost]
public ActionResult UpdateMaterial(MyModelType model)
{
     if (model.matId == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     //do something here
}