[英]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.