【问题标题】:Dynamically added row does not post when index is not iterative in ASP.NET MVC当索引在 ASP.NET MVC 中不迭代时,动态添加的行不会发布
【发布时间】: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


【解决方案1】:

我找到了解决方案,这是我认为最好的解决方案。 Dynamically add/remove fields from array without breaking it in .net mvc app

这对你有很大帮助。

【讨论】:

  • 感谢您的回答,但我通过迭代该答案表的所有 tr 并使用 ajax 调用将该对象传递给我的 MVC 操作方法来解决此问题。上述解决方案可能代价高昂,因为它会在发生某些删除时更改所有表行 ID。
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 2011-11-06
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
相关资源
最近更新 更多