繁体   English   中英

在 ASP.NET MVC 中插入多行

[英]Inserting Multiple rows in ASP.NET MVC

我在我的数据库中插入多个数据时遇到问题。这是我的代码如下:

上下文类:

 public void Add(IEnumerable<UserInformation> model)
 {   
        foreach(UserInformation user in model)
        {
            _db.Add(user);
        }

        _db.SaveChanges();                                        
 }

这是我的控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Add(IEnumerable<UserInformation> userInformation)
{
        if (!ModelState.IsValid)
        {
        }   

       _ui_context.Add(userInformation);

        return new JsonResult("User Saved!");
}

这是我的观点:

 @model IEnumerable<MyMVC.Models.UserInformation>
 <form method="POST" id="form_data">                                               
                    <input type="hidden" id="action_value" value="" />
                    <table id="tbl_data" class="table table-bordered">
                        <thead>
                            <tr>
                                <th>First Name</th>
                                <th>Last Name</th>
                                <th>Location</th>
                            </tr>
                        </thead>
                        <tbody id="table_data">

                            <tr>
                                <td>
                                    <input  type="hidden" id="txtId" class="form-control" />
                                    <input name="firstname" class="form-control" id="txtFirst" />
                                    <span class="text-danger"></span>
                                </td>
                                <td>
                                    <input name="lastname" class="form-control" id="txtLast" />
                                    <span class="text-danger"></span>
                                </td>
                                <td>
                                    <input  name="location" class="form-control" id="txtLocation" />
                                    <span class="text-danger"></span>
                                </td>
                            </tr>


                        </tbody>                             
                    </table>                                   
                </form>              
                <a class="btn btn-info" id="btnAddField">Click to Add more Fields</a>

这是我的 AJAX:

添加字段的代码

//Add fields
        var i = 1;
        $(document).on("click", "#btnAddField", function () {

            $("#table_data").append("<tr>"
                + "<td><input asp-for='FirstName' name='firstname' class='form-control' id='txtFirst" + i + "' />"
                + "<span class='text-danger'></span ></td>"
                + '<td><input asp-for="LastName" name="lastname" class="form-control" id="txtLast' + i + '" />'
                + '<span class="text-danger" ></span ></td>'
                + '<td><input asp-for="Location" name="location" class="form-control" id="txtLocation'+i+'" />'
                + '<span class="text-danger"></span ></td>'
                + "</tr > ");

            i++;
        });

POST 中的代码

var data = $('#form_data').serialize();                

                $.ajax({
                    method: "POST",
                    url: "/UserInformation/Add",
                    data: data,
                    dataType: "JSON",
                    success: function (data) {
                        alert(data);
                        clearFields();
                        $("#exampleModal").modal("hide");
                        loadUser();
                    }
                });        

每次调试时,我都会在 ajax 上得到一个空响应。 如果你能帮助我,我非常感谢。

谢谢!

要使模型绑定起作用,您需要在 name 属性中为字段提供索引。 看看这个问题,我回答了一个非常相似的问题:

所以你的代码需要看起来像下面这样,但请注意,在 javascript 中使用asp-for可能不起作用,因为要使其工作标签助手必须在服务器端呈现,您只需将 html 附加到 dom .

您还需要保持索引的运行总数,因为每个i需要对于该组 UserInformation 是唯一的。

<tr>
    <td>
        <input  type="hidden" id="txtId" class="form-control" />
        <input name="UserInformation[0].firstname" class="form-control" id="txtFirst" />
        <span class="text-danger"></span>
    </td>
    <td>
        <input name="UserInformation[0].lastname" class="form-control" id="txtLast" />
        <span class="text-danger"></span>
    </td>
    <td>
        <input  name="UserInformation[0].location" class="form-control" id="txtLocation" />
        <span class="text-danger"></span>
    </td>
</tr>

//Add fields
var i = 1;
$(document).on("click", "#btnAddField", function () {

    $("#table_data").append("<tr>"
        + "<td><input asp-for='FirstName' name='UserInformation[i].firstname' class='form-control' id='txtFirst" + i + "' />"
        + "<span class='text-danger'></span ></td>"
        + '<td><input asp-for="LastName" name="UserInformation[i].lastname" class="form-control" id="txtLast' + i + '" />'
        + '<span class="text-danger" ></span ></td>'
        + '<td><input asp-for="Location" name="UserInformation[i].location" class="form-control" id="txtLocation'+i+'" />'
        + '<span class="text-danger"></span ></td>'
        + "</tr > ");

    i++;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM