不正确的项目在 MVC 中被删除
Incorrect Item gets deleted in MVC
在我通过单击行上的删除按钮从下面的代码中删除 4 个列表项 ex:2nd 项后,它在视图中显示 1、2、3 而不是 1、3、4。当我调试视图时它显示正确的值,但是在页面呈现 TextBoxFor AeroDromeID 时显示错误。删除机场按钮也显示正确的值。有人可以帮我解决这个问题吗?
控制器
[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>
}
}
我认为当我们使用 TextBoxFor 从服务器端渲染时,数据绑定概念应该存在错误。
当我将 html 标签输入与模型活页夹一起使用时,它起作用了。
这很容易复制。
在我通过单击行上的删除按钮从下面的代码中删除 4 个列表项 ex:2nd 项后,它在视图中显示 1、2、3 而不是 1、3、4。当我调试视图时它显示正确的值,但是在页面呈现 TextBoxFor AeroDromeID 时显示错误。删除机场按钮也显示正确的值。有人可以帮我解决这个问题吗?
控制器
[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>
}
}
我认为当我们使用 TextBoxFor 从服务器端渲染时,数据绑定概念应该存在错误。 当我将 html 标签输入与模型活页夹一起使用时,它起作用了。 这很容易复制。