Итак, у меня есть сложная форма для IncomeDeclaration.
Будет отображаться текстовое поле GrossIncome для каждого действия, с которым связан IncomeDeclaration ... все это выполняется на сервере и работает просто отлично.... проблема в.Пользователь также должен иметь возможность добавлять действия на лету .. через javascript ... поэтому, когда пользователь нажимает на кнопку «Добавить действие», выпадающий список и текстовое поле должно быть добавлено внизу списка действий… вот что я получил до сих пор.
<tbody id="activities">
@Html.EditorFor(model => model.income.EconomicActivityIncomeDeclarations)
</tbody>
</table>
<a href="#" id="add_activity">Agregar Otra Actividad</a>
</fieldset>
<script type="text/javascript">
$("#add_activity").click(function () {
$.getJSON('/IncomeDeclarations/GetEconomicActivities', function (data) {
var select = new Select();
var data = new Array();
for (var i = 0; i < data.length; i++) {
var option = new Option(data[i]["name"], data[i]["i"])
//should do something here
}
//should call the template and append to #activities
});
});
</script>
<script id="template" type="text/x-jquery-tmpl">
<tr>
<td><select name="income.EconomicActivityIncomeDeclarations[${SomeNumber}].EconomicActivityId">
${MyOptions}
</select></td>
<td><input type="text" name="income.EconomicActivityIncomeDeclarations[${SomeNumber}].GrossIncome" /></td>>
</tr>
</script>
}
Атрибут name как для поля select, так и для поля text_ имеет ключевое значение для этой работы ... в противном случае привязка модели не будет работать ... Я думаю, что если переменная SomeNumber установлена в новое значение Date.GetTime() модель Binding должна работать просто отлично ...
На самом деле я не вижу необходимости в ajax для этого, но это уже другая тема ... Я просто не нашел способ сделать это без ajax ... прямо сейчасЯ хочу, чтобы шаблон работал, и добавляю элементы формы в конец списка.