Я подозреваю, что ваш ViewUserControl1
частичный выглядит следующим образом (вы не показали его, вы только что сказали, что он выглядит как следующие 8 строк, но, очевидно, он не выглядит эти 8 строк, потому что он использует другое представлениемодель):
@model IEnumerable<Employee>
for (int i = 0; i < Model.Count(); i++)
{
@Html.TextBoxFor(x => x[i].Name)
@Html.TextBoxFor(x => x[i].Address)
@Html.ValidationMessageFor(x => x[i].BBString)
<br />
}
Обратите внимание на отсутствующее свойство Emps
в лямбдах?При этом создаются недопустимые имена для полей ввода, и механизм связывания модели по умолчанию не извлекает значения при повторной публикации.
Я бы порекомендовал использовать шаблоны редактора вместо частичных представлений, например:
<div id="mydiv">
@using (Ajax.BeginForm("Index1", "Home", new AjaxOptions { UpdateTargetId = "mydiv", InsertionMode = InsertionMode.Replace, HttpMethod = "Post" }))
{
@Html.EditorFor(x => x.Emps)
<input id="dosomething" type="submit" value="save" />
}
</div>
, а затем внутри ~/Views/SomeControllerName/EditorTemplates/Employee.cshtml
просто:
@model Employee
@Html.TextBoxFor(x => x.Name)
@Html.TextBoxFor(x => x.Address)
@Html.ValidationMessageFor(x => x.BBString)
<br/>
Шаблон редактора будет отображаться для каждого элемента коллекции Emps
, поэтому вам не нужно писать циклы.Он сгенерирует собственные имена для полей ввода, чтобы механизм связывания модели по умолчанию мог заполнять значения при обратной передаче.Расположение шаблона редактора очень важно.Он должен быть помещен либо внутри ~/Views/Shared/EditorTemplates
(если вы хотите, чтобы он использовался повторно между несколькими контроллерами), либо внутри ~/Views/SomeControllerName/EditorTemplates
(если вы хотите, чтобы он был повторно использован только между представлениями данного контроллера).Название шаблона также важно.Он должен называться так же, как тип коллекции.Например, если у вас есть свойство public IEnumerable<Employee> Emps { get; set; }
в модели представления, шаблон должен называться Employee.cshtml
, чтобы он автоматически отображался для каждого элемента этой коллекции.