我的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方法将其发布到我的控制器?请帮帮我。
答案 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