2017-11-23 8 views
-2

こんにちは私はMVCをリスト<で作成していますが、リスト内のインデックスと等しいと思われるIDを使用するデータベースではありません。オブジェクトを編集して古いものを新しいものに置き換えるときはいつでも、インデックスは絶えず変化していて、オブジェクトを正常に置き換えることができません。私は間違って何をしていますか? EDIT機能を成功させるにはどうすればよいですか? Webページでは、リストの最初のオブジェクトを0のインデックスにのみ編集でき、編集されたすべてのオブジェクトは何とか0のインデックスを取得できます。LIST [index] = newObjectはオブジェクトのインデックスを変更するのはなぜですか?

+0

どのように 'HotelBoeking'が定義されていますか?それは 'class'か' struct'ですか? – Adrian

+0

これはモデルのクラスです。何が起こっているのは、0でないオブジェクトをクリックするたびに0番目のインデックスのみを編集できることです。編集できません。私のIDシステムの何が間違っているのですか何が起こっているのか分かりません –

+0

IDでソートされたリストを保持したいと思っていますか?そうであれば、既存のエントリを削除し、新しいエントリを追加して、そのIDのリストをソートします。 SortedDictionaryを使用することもできます。 –

答えて

0

作成メソッドでは、オブジェクトのBookingIdをリストのインデックスと同じに設定します。 boeking.BoekingId式はあなたのHttpPost Edit方法

int i = boekingen2.FindIndex(x => x.BoekingId == boeking.BoekingId); 

なぜ0を返している?で0を返すときは、常にリストの最初の項目(インデックス番目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> 
} 
+0

私はちょうどDEBUGを行い、HTML編集フォームが正しいIDを送信しています。大きな問題は、EDIT POST ACTIONメソッドにあります。オブジェクトを置き換えても同じインデックス/ IDを維持するにはどうすればよいですか? –

+0

あなたの現在のコードは、アイテムを更新しています。それは私にはうまく見えます。あなたはどんな特定の問題に直面していますか? – Shyju

+0

私は一度だけ編集できる特定の問題に直面しています。その後、EDIT POSTのLINQはオブジェクトのインデックスを見つけることができません。私はDEBUGを行い、リストに2つしかない間にリスト数は3と思われる。 –

関連する問題