Имам модел:
public class MyModel
{
public List<Location> Locations { get; set; }
}
Да кажем, че в списъка имаме 3 елемента. След това генерирам с EditorFor html за местоположения:
@Html.EditorFor(a => a.Locations)
Второто местоположение беше изтрито от html (с javascript маркирам флага за това местоположение като изтрит)
В Действието изтривам от списъка с местоположения изтрито местоположение
model.Locations.RemoveAll(a => a.IsDeleted);
След това генерирам новия изглед със съдържание като това:
@for (int locationIndex = 0; locationIndex < Model.Locations.Count; locationIndex++)
{
@Html.HiddenFor(m => Model.Locations[locationIndex].Address) <br />
@Html.HiddenFor(m => Model.Locations[locationIndex].LocationType) <br />
}
Въпреки че НЕ МОГА ДА ПОВЯРВАМ! Когато гледам генерирания html код, виждам своето изтрито местоположение от списъка с местоположения, така че виждам две местоположения, първо и второ. Но не първото, а третото
Моля, помогнете Никога не съм виждал това поведение от MVC. Какво правя грешно?
ВАЖНА АКТУАЛИЗАЦИЯ: След като заменя @Html.HiddenFor с прост html, той работи.
@for (int locationIndex = 0; locationIndex < Model.Locations.Count; locationIndex++)
{
<input type="hidden" name="Locations[@locationIndex].Address" value="@Model.Locations[locationIndex].Address" />
<input type="hidden" name="Locations[@locationIndex].LocationType" value="@Model.Locations[locationIndex].LocationType" />
}
model.Locations.RemoveAll(a => a.IsDeleted);
Този ред от код - в пост действието на вашия контролер ли е? Актуализира ли се обектът Locations, както бихте очаквали, когато преминете през него? - person User   schedule 23.08.2013