У меня есть продукт базового класса (свойства: int ProductID, строковое имя, десятичная цена) и некоторые типы экземпляров, основанные на продукте, например. HardDisk, которые имеют дополнительные свойства.
Я экспериментирую с правками в одном представлении, которое имеет модель, основанную на списке продуктов:
@model List<Product>
Это представление имеет один оператор редактора:
@Html.EditorForModel(Model)
Я создал шаблон редактора для класса Product, который представляет собой единую форму Ajax, позволяющую пользователю редактировать имя для каждого продукта:
@model Product
@{
// set unique IDs for result divs
var resultDiv = "result" + Model.ProductID.ToString();
}
@using (Ajax.BeginForm("Update", new AjaxOptions
{
HttpMethod = "POST",
LoadingElementId = "working",
UpdateTargetId = @resultDiv,
InsertionMode = InsertionMode.Replace
}
))
{
<div style="padding: 4px; margin-bottom: 4px; border: 1px solid gray; background-color: #eee;">
@Html.HiddenFor(m => m.ProductID)
@Html.DisplayFor(m => m.Name)
@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
<input type="submit" value="Save" />
<span id="@resultDiv">...</span>
</div>
}
Это прекрасно работает для первой строки (с идентификатором [0].Name) для отправки данных с одной записью. Однако редактирование второй или третьей строки приводит к нулевым данным в сообщении.