为什么LIST [index] = newObject会更改对象的索引?

时间:2017-11-23 20:53:47

标签: c# asp.net-mvc

您好我正在制作一个带有List<>的MVC而不是我使用ID的数据库,该ID应该等于列表中的索引。每当我想编辑一个对象并用旧的替换旧的索引时,索引就会不断变化,我无法成功替换该对象。我究竟做错了什么?如何成功编辑EDIT功能?在网页上,我只能成功编辑列表中的第一个对象的0索引,并且所有编辑的对象都以某种方式得到0索引。

1 个答案:

答案 0 :(得分:0)

在您的create方法中,您将对象的BookingId设置为与列表索引相同。所以唯一的原因是你总是更新列表中的第一项( 0 th index boeking.BoekingId表达式在您的HttpPost 0方法

中返回Edit
int i = boekingen2.FindIndex(x => x.BoekingId == boeking.BoekingId);

为什么要返回0? ,它使用默认值int。这意味着您的编辑表单不会将此属性的值作为提交的表单数据的一部分发送。要解决此问题,您需要在请求正文中发送值。您可以将此属性值保留在表单内的隐藏元素中。

您可以使用Html.HiddenFor辅助方法生成隐藏输入。

@model HotelBoeking
@using (Html.BeginForm("Edit", "home"))
{
    @Html.HiddenFor(a=>a.BoekingId)

    @Html.LabelFor(a=>a.Naam)
    @Html.TextBoxFor(a=>a.Naam)

    @Html.LabelFor(a=>a.GeboorteJaar)
    @Html.TextBoxFor(a=>a.GeboorteJaar)

    @Html.LabelFor(a=>a.AantalPersonen)
    @Html.TextBoxFor(a=>a.AantalPersonen)

    <button type="submit">Save</button>
}