Ответ 1
Связывание с моделью зависит от того, как выглядит сгенерированный html. для конкретного сценария привязки надлежащего html должен выглядеть как
<input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[0].BandName"/>
<input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[1].BandName"/>
<input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[2].BandName"/>
.
.
<input type="text" name = "ResponseInfo.SubsetInfo.BandAvailabilities[n].BandName"/>
Я не пробовал, но я почти уверен, что вызов метода ToArray в цикле не позволяет системе генерировать собственные имена для вложенных входов. Есть несколько вещей, которые вы можете сделать, чтобы исправить это Во-первых, в вашей модели изменение модели
public IEnumerable<BandAvailabilityInfo> BandAvailabilities { get; set; }
к
public IList<BandAvailabilityInfo> BandAvailabilities { get; set; } //or Array
поэтому вам не нужно вызывать метод ToArray в цикле и создавать собственные имена для ввода.
Во-вторых, создайте шаблон редактора и поместите его в папку шаблонов редактора либо под текущим контроллером, либо в папку шаблона редактора общих папок. Сделайте это представление принятым моделью типа BandAvailabilityInfo
, и имя этого представления также должно быть BandAvailabilityInfo
. то в главном представлении вам нужно заменить весь цикл на
<%: Html.EditorFor(m => m.ResponseInfo.SubsetInfo.BandAvailabilities%>
и остальное будет обрабатываться самой картой