So I created a variable length list using the code shown here.
When I submit the form, the primary keys are reset to 0. In the HTML form, they are not zero but the actual values. How do I fix this?
The form
@using (Html.BeginCollectionItem("Kortingartikel")) {
@Html.HiddenFor(x => x.Artikelid)
@Html.TextBoxFor(x => x.Artikelnaam)
@Html.TextBoxFor(x => x.Prijs)</td>
}
The data
According to Chrome, this data is sent to the server:
Kortingartikel.index:ad56efb0-ab7f-4b37-9d9b-712d7c3e3543
Kortingartikel[ad56efb0-ab7f-4b37-9d9b-712d7c3e3543].Artikelid:5
Kortingartikel[ad56efb0-ab7f-4b37-9d9b-712d7c3e3543].Artikelnaam:test artikel een
Kortingartikel[ad56efb0-ab7f-4b37-9d9b-712d7c3e3543].Prijs:10,00
Kortingartikel.index:b9624d8f-38e6-4092-ba1b-d004d0443a43
Kortingartikel[b9624d8f-38e6-4092-ba1b-d004d0443a43].Artikelid:6
Kortingartikel[b9624d8f-38e6-4092-ba1b-d004d0443a43].Artikelnaam:test artikel twee
Kortingartikel[b9624d8f-38e6-4092-ba1b-d004d0443a43].Prijs:5,00
The Action
The data is sent to the following action:
public ActionResult Kortingartikel(IEnumerable<Kortingartikel> Kortingartikel)
The 'Kortingartikel' parameter has the following values:
[0]Artikelnaam:test artikel een
Prijs: 10
Artikelid: 0
[1]Artikelnaam:test artikel twee
Prijs: 5
Artikelid: 0
The property/field Artikelid
Artikelid is generated from a linq-to-sql dbml file. Here is the (autogenerated) code:
[global::System.Data.Linq.Mapping.ColumnAttribute(Name="artikelid", Storage="_artikelid", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
public long Artikelid
{
get
{
return this._artikelid;
}
set
{
if ((this._artikelid != value))
{
this.OnArtikelidChanging(value);
this.SendPropertyChanging();
this._artikelid = value;
this.SendPropertyChanged("Artikelid");
this.OnArtikelidChanged();
}
}
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…