Если ваш первоначальный список пуст, и это будет динамически clreated, вам не нужно передать пустой список к просмотру , здесь идет упрощенная версия того, что вам нужно.
контроллер:
public class TestController : Controller
{
// GET: Test
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult AddTeams()
{
// you do not need to pass anything if you list is empty
return View();
}
[HttpPost]
public ActionResult AddTeams(List<string> teamNames)
{
// do whatever you want with your teamnames
return RedirectToAction("Index");
}
}
вид:
@using (Html.BeginForm("AddTeams", "Test", FormMethod.Post))
{
<table id="teams-list">
<tr>
<td>Team name:</td>
<td><input type="text" name="teamNames[0]" /></td>
</tr>
</table>
<button type="button" id="add-btn">Add one more team</button>
<br/>
<button type="submit">submit</button>
}
<script>
$('#add-btn').on('click', function() {
var currentTeamCount = $('#teams-list tr').length;
$('#teams-list tr:last').after('<tr><td>Team name:</td><td><input type="text" name="teamNames[' + currentTeamCount + ']" /></td></tr>');
});
</script>
Поскольку вы свойство представляет собой набор типов значений, вам просто нужно сгенерировать '<входной тип = "текст" Name = "TeamNames"/ >. Для динамически связывающих элементов управления для набора сложных объектов [этот ответ] (http://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308) дает некоторые варианты. –