Привязка модели зависит от того, как выглядит сгенерированный 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%>
, а остальное будет обрабатываться самой платформой