多个 Ajax 调用参数在 .Net Core Controller 中全部为 null

Multiple Ajax Call parameters all coming as null in .Net Core Controller

我知道这个问题已经被问过好几次了,但是 none 的答案对我有用。我正在尝试过去 3 小时以来的一切。

要求很简单:使用 JQuery 从视图调用 .Net Core 2.1 控制器方法。将 3 个参数传递给控制器​​。

我的jQuery:

function EmpSubmit() {
    var EmpName = $('#txtEmpName').val();
    var EmpDesignation = $('#txtDesignation').val();
    var EmpCity = $('#txtCity').val();

    // ajax call to create new employee

    var data1 = '{"EmpName": "' + EmpName + '", "EmpDesignation" : "' + EmpDesignation + '", "EmpCity" : "' + EmpCity + '"}';
    
    $.ajax({
        url: '@Url.Content("~/Employee/CreateViaModal/")',
        dataType: 'json',
        type: 'POST',
        data: data1,
        contentType: 'application/json',
        success: function (result) {

            $("#EmpCreateModal").modal('hide');
            window.location.reload(true);
        }
    });
}

控制器:

[HttpPost]
    public IActionResult CreateViaModal(string EmpName, string EmpDesignation, string EmpCity)
    {
        TblEmployee tblEmployee = new TblEmployee();
        tblEmployee.EmpName = EmpName;
        tblEmployee.Designation = EmpDesignation;
        tblEmployee.City = EmpCity;

        _context.Add(tblEmployee);
       _context.SaveChanges();

        return Json(tblEmployee);
    }

Ajax 调用成功命中控制器中的调试器,只是参数始终为 NULL。不确定这里需要做什么。

您的代码不起作用,因为您正在向您的操作发送字符串。

var data1 = '{"EmpName": "' + EmpName + '", "EmpDesignation" : "' + EmpDesignation + '", "EmpCity" : "' + EmpCity + '"}';替换为

var data1 = {
    EmpName,
    EmpDesignation,
    EmpCity
}

并在您的 AJAX 请求中: data: JSON.stringify(data1) 而不是 data: data1,

之后,创建一个Employee class:

public class Employee
{
  public string EmpName {get;set;}
  public string EmpDesignation {get;set;}
  public string EmpCity {get;set;}
}

并将您的操作方法更改为:

public IActionResult CreateViaModal([FromBody]Employee employee)