【发布时间】:2020-04-18 16:46:38
【问题描述】:
我在我的 ASP.NET MVC 视图中动态添加了一行。例如,如果我有 4 行并使用 jQuery 删除了第 3 行,那么我的 ASP.NET MVC post 方法只会回发前 2 行,因为它会破坏索引序列。
名称值类似于name="Answers[1].AnswerName",下一个值是name="Answers[3].AnswerName",所以它只回发Answers[0]和Answers[1],而不是在删除Answers[2]之后的Answers[4]。
即使连续剧坏了,需要发布所有行吗?
@{
int i = 0;
foreach (Answer ans in Model.Answers)
{
<tr id="@ans.AnswerID">
<td style="width:10%">@(i+1)</td>
<td style="width:60%">
@Html.TextAreaFor(t => t.Answers[i].AnswerName, new { @class = "form-control", @required = "required" })
<div class="invalid-feedback">
Please enter answer
</div>
</td>
<td style="width:10%">
@Html.CheckBoxFor(t => t.Answers[i].IsCorrect, new { @type = "checkbox", @id = "Answers[" + ans.AnswerID + "].IsCorrect" })
@Html.HiddenFor(t=>t.Answers[i].AnswerID)
</td>
<td style="width:20%">
<button type="button" style="font-size:10px" onclick="generatenewrow(this)">Add <i class="fas fa-plus-circle"></i></button>
<button type="button" style="font-size:10px" onclick="deleteNewRow(this)">Delete <i class="fas fa-minus-circle"></i></button>
</td>
</tr>
i = i + 1;
}
}
【问题讨论】:
-
请包含您的脚本,该脚本可以从 html 表中动态添加或删除。我们需要添加一个重新排序功能。
-
函数 deleteRow(e) { 调试器; var totalRow = $("#tbodyAnswer").find('tr').length; if (totalRow > 2) { var element = $(e); var id = element.closest('tr').attr('id'); $("#" + id).remove(); } else { $("#centralModalSm").modal('show'); $("#txtMessage").text("必须有两个选项"); } }
-
如何添加重新排序功能?
-
老兄! @akash我也陷入了这种情况。你是怎么摆脱这个问题的。你找到了什么解决方案?请与我分享。
-
@ZiaUrRahman 我使用 java 脚本处理这个问题。我没有使用 MVC post 方法。我实现了一个脚本,该脚本准备迭代该答案表的所有 tr 的模型。之后在 MVC 后操作方法中传递该 obj。
标签: jquery asp.net-mvc post razor