动态添加输入字段的表单集合问题

时间:2014-02-13 07:13:48

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我的html开始表单中有一个输入框

 @using (Html.BeginForm("Search", "Reports",FormMethod.Post, new { enctype = "multipart/form-data"))
 {
  <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue">

    <button type="button" class="btn btn-default btn-Add">+</button>
   <input type="submit" value="Search" class="btn btn-primary" />
  }

当我按下添加按钮时,我的表单变为:

 @using (Html.BeginForm("Search", "Reports",FormMethod.Post, new { enctype = "multipart/form-data"))
 {
  <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue">
   <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue">
    <button type="button" class="btn btn-default btn-Add">+</button>
   <input type="submit" value="Search" class="btn btn-primary" />
  }

如何在我的控制器中收集此表单值,或者是否有任何jquery方法将其发布到我的控制器?请帮帮我。

3 个答案:

答案 0 :(得分:3)

当您动态添加元素时,请确保也为其设置名称。所以当你添加一个新的输入元素时,它必须是

 <input type="text" name="NewTextBox" class="form-control input-sm" placeholder="Value" name="searchvalue">

因此,无论您添加多少文本框,All都会有相同的名称。一旦发布表格。在您的控制器中执行此操作。

[HTTPPOST]
public ActionResult Search(MyModel newModel,string[] NewTextBox)
{
 // here as you had dynamic textbox with name = NewTextBox you 
 //will get all its value binded to the above string[]

}

OR

您可以使用Request.form["NewTextBox"]作为

来检索它们
 [HTTPPOST]
    public ActionResult Search(MyModel newModel)
    {
     var values = Request.Form[NewTextBox];

    }

但我建议您使用MVC Model Binder来处理所有事情的第一种方法。您将只有数组值。

注意:始终确保您获得正确的名称,并在玩MVC时使用正确的名称。因为所有绑定都取决于命名本身。

答案 1 :(得分:1)

我认为您应该使用FormCollection来获取文本框值。如下所示:

  public ActionResult Search(FormCollection collection)
   {
    //string searchvalue = collection.Get("SearchValue");
    var results = ((String[])formcollection.GetValue("SearchValue").RawValue).ToList();
    return View();
  }

答案 2 :(得分:0)

如果添加模型中没有的额外字段,可以使用FormCollection作为模型类型,或者在HttpContext.Request.Form中查找值。

当您添加名称searchvalue两次时,您可能会在FormCollection中看到它为[0] .searchvalue和[1] .searchvalue

你需要迭代这些来获取它们的值。

的Si