Я добавляю строки динамически, используя jquery при изменении события выпадающего списка.Строка содержит флажки, TextArea и Dropdown.Все элементы управления связаны со свойствами модели.Флажок также связан со свойством bool Model.При отправке формы контроллер получает Модель, другие элементы управления, такие как TextArea и раскрывающийся список, имеют значения, введенные в форму, но свойство флажка всегда ложно, несмотря на проверку флажка.
Так классы HtmlHelper используются для привязки модели.
<tr>
<td>
@Html.CheckBoxFor(model => model.FunctionalRequirementsList[i].isSelected, new { @class = "checkbox" })
@Html.HiddenFor(model => model.FunctionalRequirementsList[i].FunctionalRequirementId)
</td>
<td>
@Html.TextAreaFor(model => model.FunctionalRequirementsList[i].FunctionalRequirement, 5, 80, new { @class = "text form-control col-md-10", style = "background-color:#fcf999;max-width:100%;height:50px;", ReadOnly = "true" })
</td>
<td>
@Html.DropDownListFor(model => model.FunctionalRequirementsList[i].DefaultPriorityId, new SelectList(Model.FunctionalRequirementsList[i].ApllicabilityOptions, "Value", "Text", Model.FunctionalRequirementsList[i].DefaultPriorityId), new { @class = "form-control col-md-1" })
</td>
</tr>
Код Jquery для динамического добавления:
var oldFRSelected_Id = $trlast.find("input[type='checkbox'][id*='isSelected']").attr('id')
var oldFRSelected_Id_Slice = oldFRSelected_Id.split('_');
var newFRSelected_Id = oldFRSelected_Id_Slice[0] + "_" + (i + 1) + "__" + oldFRSelected_Id_Slice[3]
var newFRSelected_name = oldFRSelected_Id_Slice[0] + "[" + (i + 1) + "]." + oldFRSelected_Id_Slice[3]
$trclone.find("input[type='checkbox'][id*='isSelected']").attr('id', newFRSelected_Id);
$trclone.find("input[type='checkbox'][id*='isSelected']").attr('name', newFRSelected_name);