2017-09-24 7 views
-1

リストアイテムを削除した後、行の削除ボタンをクリックして下のコードから4番目の2番目のアイテムを削除すると、1,3,4の代わりに1,2,3が表示されます。ビューをデバッグすると、正しい値が表示されますが、ページのレンダリングでTextBoxForAeroDromeIDが間違って表示されます。また、飛行場の削除ボタンで正しい値が表示されます。この問題を解決するのに役立つ人もいます。MVCで不正なアイテムが削除される

コントローラ

[HttpPost] 
    [MultipleButton(Name = "action", Argument = "DeleteAerodrome")] 
    public ActionResult DeleteAerodrome(FormCollection fc) 
    { 
     int AerodromeID = Int32.Parse(fc["action:DeleteAerodrome"]); 
     var studentSignoutModel = new StudentSignoutViewModel(); 
     UpdateModel<StudentSignoutViewModel>(studentSignoutModel); 
     if (studentSignoutModel.Aerodromes.Count > 0) 
      studentSignoutModel.Aerodromes.RemoveAll(m => m.AerodromeID == AerodromeID); 
     return View("StudentSignoutStageView", studentSignoutModel); 
    } 

ビュー

@if (Model.Aerodromes != null && Model.Aerodromes.Any()) 
         { 
          for (int i = 0; i < Model.Aerodromes.Count; i++) 
          { 
           <tr> 
            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].AerodromeID, new { @class = "form-control"})</td> 
            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].CloudBase, new { @class = "form-control" })</td> 

            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].Visibility, new { @class = "form-control" })</td> 

            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].Wind, new { @class = "form-control" })</td> 

            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].Crosswind, new { @class = "form-control" })</td> 

            <td>@Html.TextBoxFor(a => Model.Aerodromes[i].InterTempo, new { @class = "form-control" })</td> 
            <td> 
            <input type="submit" id="BtnDelAerodrome" value="@Model.Aerodromes[i].AerodromeID" name="action:DeleteAerodrome" style="font-size:1em" class="btn btn-danger" onclick="return confirm('Are you sure you want to delete the record with AerodromeID = '+ @Model.Aerodromes[i].AerodromeID);" /> 
            </td> 
           </tr> 
          } 
         } 
+0

具体的な問題は何ですか?コード内でブレークポイントを使用し、必要に応じて変数の値を調べます。 (例:アクションメソッドのAerodromeID) – Shyju

+0

実際にビューに当たったとき、コレクションは空中線で1,3,4を示します。しかし、レンダリングすると、ページに123が表示されます。これは変です –

答えて

0

私たちはTextBoxForを使用する場合、サーバ側からレンダリング中にデータバインディングをコンセプトにバグがあるはずだと思います。 モデルバインダーでhtmlタグの入力を使用すると効果があります。 これは簡単に複製できます。

関連する問題