【发布时间】:2016-03-11 14:43:30
【问题描述】:
我是 MVC 和 JavaScript 的新手,所以请原谅我的基本问题。我正在编写一个显示多行数据的视图,并在每行的末尾显示一个删除按钮。单击时,该按钮将运行一些 JavaScript,该 JavaScript 使用 .remove() 删除该行。
当我单击“删除”按钮时,该行被删除,但是当我返回控制器时,被删除行下方的任何行都不会传输回控制器,并且计数比我删除的行少一。例如,如果我有 6 行并删除第 4 行,当我提交回控制器时,计数为 3 并且缺少第 5 行和第 6 行。不知道为什么。下面是我的视图和控制器。
任何帮助将不胜感激。
查看
@using (Html.BeginForm("Edit", "Contacts", FormMethod.Post))
{
<table>
<tr>
<th><label>Last Name</label></th>
<th><label>First Name</label></th>
.... // more table headings
<th></th>
</tr>
@if (Model != null && Model.Count > 0)
{
int j = 0;
foreach (var i in Model)
{
<tr>
<td>
@Html.TextBoxFor(a => a[j].LASTNAME)
@Html.HiddenFor(a => a[j].DOB_NBR)
@Html.ValidationMessageFor(a => a[j].LASTNAME)
</td>
<td>
@Html.TextBoxFor(a => a[j].FIRSTNAME)
@Html.ValidationMessageFor(a => a[j].FIRSTNAME)
</td>
.... // more controls
<td><button type="button" id="btnDelete" class="deleteContact btn btn btn-danger btn-xs">Remove</button></td>
</tr>
j++;
}
}
</table>
<input type="button" class="add-button btn btn-default" name="add" value="Add" />
<input type="submit" name="submitAction" value="Submit" class="btn btn-primary" onclick="return confirm('Please double check all information before submitting. Submit Notification?')" />
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript">
$(document).on("click", ".deleteContact", function () {
$(this).closest("tr").remove();
});
</script>
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(string submitAction, List<ENTITY_CONTACTS> entity_Contacts)
{
// entity_Contacts is not bound with all items in the collection
}
【问题讨论】:
标签: javascript asp.net-mvc asp.net-mvc-4