Модель: Прежде всего, необходимо иметь свойства (с приготовьтесь оба)
public class Foo
{
public string Name
{
get; set;
}
public List<Bar> BarList
{
get; set;
}
}
public class Bar
{
public string Name{
get; set;
}
}
Вид: В MVC, если имя любого элемента управления HTML в синхронизации с моделью, то значение этого элемента управления HTML будет автоматически привязываться к этому свойству.
@model Foo
@using (Html.BeginForm("Index", "Default", FormMethod.Post))
{
<span> Name:</span>
@Html.TextBoxFor(m => m.Name)
<span> List of Bars</span>
for (int i = 0; i < 10; i++)
{
@Html.TextBoxFor(m => m.BarList[i].Name)
//or
// <input type="text" name="BarList[@i].Name" />
}
<input type="submit" value="save" />
}
нажмите кнопку (отправить форму), и полные данные будут привязаны к параметру foo вашего действия.
Контроллер:
[HttpPost]
public ActionResult Index(Foo foo)
{
return View();
}
Отредактировано: Если вы хотите добавить динамические строки, то ниже код добавить новую кнопку и DIV, где вы будете добавлять новые строки
<div id="divBar"></div>
<button type="button" onclick="AddnewRow()">Add new Row</button>
объявить jquery
<script>
var i=0;
function AddnewRow()
{
var string = '<input type="text" name="BarList[' + i + '].Name" /><br/>';
$('#divBar').append(string);
i = i + 1;
}
</script>
Полная Па GE после выполнения этого
<script src="~/scripts/jquery-1.10.2.min.js"></script>
@using (Html.BeginForm("Index", "Default", FormMethod.Post))
{
<span> Name:</span>
@Html.TextBoxFor(m => m.Name)
<span> List of Bars</span>
<div id="divBar"></div>
<button type="button" onclick="AddnewRow()">Add new Row</button>
<input type="submit" value="save" />
}
<script>
var i=0;
function AddnewRow()
{
var string = '<input type="text" name="BarList[' + i + '].Name" /><br/>';
$('#divBar').append(string);
i = i + 1;
}
см [этот ответ] (http://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to- контроллер/28081308 # 28081308) для некоторых опций –
@ StephenMuecke благодарит Стивена, однако кажется, что ответы там содержат публикацию списка объектов, а не объекта, содержащего список объектов. – Chawin
Это точно так же :) Вы просто используете метод BeginCollectionItem() для свойства объекта, который является коллекцией, или создайте шаблон для своего объекта в списке - и вот [другой] (http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796), который основан на объекте, содержащем список –