Jquery Ajax 使用 ASP Core JsonResult 发布

Jquery Ajax Posting with ASP Core JsonResult

我想post在Asp核心中JqueryAjax的一种数据形式。

AJAX 代码

    if (contactForm.valid() == true) {
    var formData = new FormData();
    formData.append("Name", contactForm.find("input[name='Name']").val());
    formData.append("Email", contactForm.find("input[name='Email']").val());
    formData.append("Subject", contactForm.find("input[name='Subject']").val());
    formData.append("Message", contactForm.find("textarea[name='Message']").val());
    $.ajax({
        url: "/home/contact",
        method: 'POST',
        data: formData,
        processData: false,
    }).done(function (data) {
        if (data == "success") {
            setTimeout(function () { $("#footer_contact__form .alert-success").removeClass("d-none") }, 500);
        }
        else {
            setTimeout(function () { $("#footer_contact__form .alert-danger").removeClass("d-none") }, 500);
        }
    }).fail(function () {

    });
}

控制器

 [HttpPost]
    public JsonResult Contact(Contact entity)
    {
        if (ModelState.IsValid)
        {
            entity.Date = DateTime.Now;
            _uow.Contact.Add(entity);
            return Json("ok");
        }
        else
        {
            return Json("failed");
        }
    }

执行此操作时出现错误。我如何 post 顺利地使用 Asp 核心和 Ajax 的模型?谢谢。

您应该将 contentType 选项设置为 false。

$.ajax({
    url: "/home/contact",
    method: 'POST',
    data: formData,
    processData: false,
    contentType:false,
})

更多详细信息,请参阅此thread