我有一个模型:
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 替换 @Html.HiddenFor ,它就可以工作了。
@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" />
}