【发布时间】:2020-04-28 17:56:16
【问题描述】:
我有一个弹出表单AddorEdit.cshtml,它是从index.cshtml 页面调用的。表单正在打开,但无法将数据发布到控制器方法。
索引页面
// index.cshtml //
<a class="btn btn-success" style="margin-bottom:10px;" onclick="PopupForm('@Url.Action("AddorEdit", "Vehicles")')"><i class="fa fa-plus"></i> Add New</a>
<table id="tbl_vehicle" class="table table-striped table-bordered" style="width:100%;" >
//table block
<script>
function SubmitForm(form) {
$.ajax({
type: "POST",
url: form.action,
data: $(form).serialize(),
success: function (date) {
if(data.success)
{
Popup.dialog('close');
dataTable.ajax.reload();
}
}
});
</script>
弹出表单
//AddorEdit.cshtml //
@using (Html.BeginForm("AddorEdit", "Vehicles", FormMethod.Post, new { onsubmit = "return SubmitForm(this)" }))
//form
控制器方法
// VehiclesController.cs //
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddorEdit([Bind(Include = "Id,VehicleType,Amount,RenewPeriod,Status")] Vehicle vehicle)
{
if (ModelState.IsValid)
{
if (vehicle.Id <= 0)
{
vehicle.RegisteredDate = DateTime.Now;
vehicle.RegisteredBy = "admin";
db.Vehicle.Add(vehicle);
}
else
{
db.Entry(vehicle).State = EntityState.Modified;
}
db.SaveChanges();
}
return Json(new { success = true, message = "Saved Successfully" }, JsonRequestBehavior.AllowGet);
}
我无法检测到数据未发布到控制器方法的原因。谢谢!!!
【问题讨论】:
-
您的浏览器控制台或事件查看器中是否有任何 javascript 错误?
-
您的
SubmitForm方法中的form实例实际上是否包含表单详细信息?请求是否发送到正确的操作并带有正确的详细信息(在 QueryString 或 Body 中)?如果是这样,应该是 API 端点没有正确反序列化值的问题。 -
ajax.success 事件是否触发?如果您在操作中添加断点,它会命中吗? form.action 还有什么价值?
-
@nischalinn 有一个错误
success: function (date) {将date更改为data。然后请测试您的问题是否已解决。谢谢!!!
标签: c# jquery asp.net asp.net-mvc asp.net-ajax