Asp.net mvc 如何在MVC中提交具有多个按钮和参数的同一表单?

Asp.net mvc 如何在MVC中提交具有多个按钮和参数的同一表单?,asp.net-mvc,button,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" /> <

我试图弄清楚如何使用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>
  }
}

谢谢你的帮助!解决方案可能比我想象的要简单,我开始感到困惑:)

您有无效且不受支持的嵌套表单。您需要删除外部
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>
  }
}
@foreach(ViewBag.Projects中的var项目)
{
使用(Html.BeginForm(new{projid=project.projid}))//将projid添加为路由值
{

@project.name
//删除id属性

} }
谢谢!现在它就像一个符咒。我没有注意如何嵌套表单,也没有意识到可以以这种方式将表单添加到路由中。
@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>
  }
}