弹出表单中的ajax数据发布未命中控制器方法ASP.NET MVC - c#

我有一个弹出表单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);

}

我无法检测为什么数据未发布到控制器方法。谢谢!!!

参考方案

use like this in your Form,it will fix your problem

    @using (Html.BeginForm("AddorEdit", "Vehicles", FormMethod.Post, new { onsubmit = 
     "return SubmitForm(this)" }))
    {
       @Html.AntiForgeryToken()
    }

如果您正在使用

[ValidateAntiForgeryToken]

此属性位于您的操作方法之上
你必须使用

@Html.AntiForgeryToken()

在你看来

ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…

ASP.NET MVC ExecuteResult与ActionResult - c#

我见过它用来向响应添加标头,然后返回文件进行流传输。public override void ExecuteResult(ControllerContext context) { ... response.AddHeader("Accept-Ranges", "bytes"); response.AddHeader(&…

ASP.NET MVC Core 3.0 API将枚举序列化为字符串 - c#

如何在ASP.NET MVC Core 3.0中将Enum字段序列化为String而不是Int?我不能用旧的方式做。services.AddMvc().AddJsonOptions(opts => { opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter()); }) 我收到…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …