C# 为什么在ASP.NET内核中将带有Ajax的参数传递给控制器时总是空的?
它可以工作,但传递的参数始终为null,此代码在ASP.NET Framework(.NET Framework)上的其他项目上工作,但在ASP.NET Core中不工作C# 为什么在ASP.NET内核中将带有Ajax的参数传递给控制器时总是空的?,c#,asp.net-core,parameter-passing,asp.net-ajax,C#,Asp.net Core,Parameter Passing,Asp.net Ajax,它可以工作,但传递的参数始终为null,此代码在ASP.NET Framework(.NET Framework)上的其他项目上工作,但在ASP.NET Core中不工作 var inputParams = "{namex: '" + 'testdata' + "'}"; var xhr = $.ajax({ url: "/Test/MyFunction", type: 'POST', dataType: 'json', data: inputParams,
var inputParams = "{namex: '" + 'testdata' + "'}";
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: inputParams,
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
测试控制器包含:
[HttpPost]
public JsonResult MyFunction(string namex) <--- namex is always NULL
{
return Json(false);
}
[HttpPost]
公共JsonResult MyFunction(字符串namex)将FromBodyAttribute添加到参数
MyFunction([FromBody]string namex)数据未以正确格式发送,内容无法正确绑定到操作
首先,正确构建要发布的有效负载
var inputParams = { namex: "testdata" }; //<-- NOTE JavaScript
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: JSON.stringify(inputParams), //<-- NOTE CONVERSION TO JSON
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
最后重构操作以绑定到请求主体中的预期数据
[HttpPost]
public IActionResult MyFunction([FromBody]MyModel model) {
if(ModelState.IsValid) {
string namex = model.namex;
return Ok();
}
return BadRequest(ModelState);
}
Reference刚刚发送了它,没有对象
var inputParams = 'testdata';
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: inputParams,
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
或
var xhr=$.ajax({
url:“/Test/MyFunction?namex=testdata”//我找到了另一个类似于您的答案,但为什么我要创建一个模型(MyModel)只是为了向我的控制器传递一个简单的变量,如果不创建一个额外的模型,就没有办法做到这一点?@motevalizadeh实际代码将如何使用?我只是建议Asp.Net Core中模型绑定文档最推荐的方法。请查看答案中提供的链接。
var inputParams = 'testdata';
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: inputParams,
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
var xhr = $.ajax({
url: "/Test/MyFunction?namex=testdata", // <------ here
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});