以ASP.NET MVC表形式动态添加行

hed*_*ds1 1 html c# asp.net asp.net-mvc jquery

我试图对ASP.NET MVC表下方的“添加”按钮进行编程,以动态追加空白行,然后单击“提交”按钮以将每一行保存到数据库中。

关于SO 有几个 类似的 问题,但我没有一个可以适用于此。我一直在尝试应用此示例,但“添加”按钮未附加新行。

模型:

public class TableForm
    {
        public int Id { get; set; }
        public List<TableFormData> TableFormDatas { get; set; }
    }

    public class TableFormData
    {
        public int Id { get; set; }
        public string ClientSampleID { get; set; }
        public string AdditionalComments { get; set; }
        public string AcidStables { get; set; }
Run Code Online (Sandbox Code Playgroud)

剃刀视图:

@model NewTestSix.Models.TableForm

@{
    ViewData["Title"] = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

<fieldset>
    <legend>Sample submission</legend>
    <table id="submissionTable" class="table table-bordered">
        <thead>
            <tr>
                <td>Sample ID</td>
                <td>Additional Comments</td>
                <td>Acid-stable amino acids</td>
            </tr>
        </thead>

        <tr id="tablerow0">
            <td>
                <div class="editor-field">
                    <input class="text-box single-line" name="ClientSampleID[0]" type="text" value="" required="required" />
                </div>
            </td>
            <td>
                <div class="editor-field">
                    <input class="text-box single-line" name="AdditionalComments[0]" type="text" value="" required="required" />
                </div>
            </td>
            <td>
                <div class="editor-field">
                    <input class="text-box single-line" name="AcidStables[0]" type="text" value="" />
                </div>
            </td>
            <td>
                <button type="button" class="btn btn-primary" onclick="removeTr(0);">Delete</button>
            </td>
            <td>

            </td>
        </tr>

    </table>
    <p>
        <button id="add" type="submit" class="btn btn-primary">Add</button>
    </p>
    <hr />

    <p>
        <input type="submit" value="Create" class="btn btn-default" />
    </p>
</fieldset>
}

@section Scripts {
    <script src="~/bundles/jqueryval.js" type="text/javascript">
        var counter = 1;
        $(function () {

            $('#add').click(function () {
                $('<tr id="tablerow' + counter + '"><td>' +
                    '<input type="text" class="text-box single-line" name="ClientSampleID[' + counter + ']" value="" required="required" />' +
                    '</td>' +
                    '<td>' +
                    '<input type="text" class="text-box single-line" name="AdditionalComments[' + counter + ']" value="" required="required" />' +
                    '</td>' +
                    '<td>' +
                    '<input type="text" class="text-box single-line" name="AcidStables[' + counter + ']" value="" required="required" />' +
                    '</td>' +
                    '<td>' +
                    '<button type="button" class="btn btn-primary" onclick="removeTr(' + counter + ');">Delete</button>' +
                    '</td>' +
                    '</tr>').appendTo('#submissionTable');
                counter++;
                return false;
            });
        });
        function removeTr(index) {
            if (counter > 1) {
                $('#tablerow' + index).remove();
                counter--;
            }
            return false;
        }
    </script>
Run Code Online (Sandbox Code Playgroud)

在此阶段,我对与控制器的模型绑定并不太烦恼,我只想让此添加按钮起作用。控制器示例:

  [HttpPost]
        public ActionResult Index(string any = "")
        {
            IList<TableForm> _TableForm = new List<TableForm>();

            //Loop through the forms
            for (int i = 0; i <= Request.Form.Count; i++)
            {
                var ClientSampleID = Request.Form["ClientSampleID[" + i + "]"];
                var additionalComments = Request.Form["AdditionalComments[" + i + "]"];
                var acidStables = Request.Form["AcidStables[" + i + "]"];

                if (!String.IsNullOrEmpty(ClientSampleID))
                {
                    _TableForm.Add(new TableForm { ClientSampleID = ClientSampleID, AcidStables = acidStables, AdditionalComments = additionalComments });
                }
            }

            return View();
        }
Run Code Online (Sandbox Code Playgroud)

感谢您的任何见解。

当前: 当前

单击“添加”按钮后需要: 在此处输入图片说明

Nam*_* Le 5

改变你的

<button id="add" type="submit" class="btn btn-primary">Add</button>
Run Code Online (Sandbox Code Playgroud)

进入

<button id="add" class="btn btn-primary">Add</button>
Run Code Online (Sandbox Code Playgroud)

我不认为Addbutton应该做一个submit

然后src="~/bundles/jqueryval.js"script标签中删除部分。根据此答案,我们不应src在此处保留属性。

像这样

<script type="text/javascript">
    var counter = 1;
    //... the rest of your code is here...
</script>
Run Code Online (Sandbox Code Playgroud)

如果您确实有jqueryval.js文件,请将其放在另一个<script>标签中。

如果我没记错的话,这就是您期望的结果。

<button id="add" type="submit" class="btn btn-primary">Add</button>
Run Code Online (Sandbox Code Playgroud)
<button id="add" class="btn btn-primary">Add</button>
Run Code Online (Sandbox Code Playgroud)

让我知道是否有帮助。