多个 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)
我知道这个问题已经被问过好几次了,但是 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)