如何在MVC中提交具有多个按钮和参数的相同表单?

时间:2015-10-02 00:09:25

标签: asp.net-mvc button

我正在尝试弄清楚如何使用ID参数多次发布相同的表单,具体取决于单击的按钮。我遇到的问题是表单仅在按下第一个按钮时发布,但没有其他按钮使表单发布。

@using (Html.BeginForm())
{
  foreach (var p in ViewBag.Projects)
  {
  <form role="form" id="frm">
  <input type="hidden" value="@p.projId" name="projid" />
  <p>@p.name <input type="submit" value="Add user" 
  class="btn btn-default btn-xs" id="btn-add" /></p>
  </form>
  }
}

我想在按下该项目旁边列出的按钮时发布项目的ID。我的postfunction看起来像这样:

 [HttpPost]
    public ActionResult projects(int projid)
    {
        //testing
        TempData["title"] = projid.ToString();
        ViewBag.Projects = repo.GetAllProjectsForUser(User.Identity.Name);
        return View();
    }

感谢您的帮助!解决方案可能比我想象的要容易,开始让自己迷惑:)

1 个答案:

答案 0 :(得分:0)

您有嵌套的表单,这些表单无效且不受支持。您需要删除外部Html.BeginForm()。由于您在提交按钮中添加了重复的id属性,您还会生成无效的html。由于您没有编辑任何值,因此您不需要隐藏输入,而是可以将projId的值添加到路径参数

@foreach (var project in ViewBag.Projects)
{
  using (Html.BeginForm(new { projid = project.projid })) // add projid as a route value
  {
    <p>
      @project.name
      <input type="submit" value="Add user" class="btn btn-default btn-xs" /> // remove the id attribute
    </p>
  }
}