我的 MVC 项目中有一个 ajax 调用,它调用 net core 7 控制器。当我尝试将 json 发送到控制器时,控制器中的 accountId 为 null。使用 Object() 是一种解决方法,但我想使用 json。
控制器:
[HttpGet]
public JsonResult GetAccount(string accountId)
{ ... }
有效的 Ajax:
var myObject = new Object();
myObject.accountId = "123";
// Perform the remote call.
$.ajax({
url: 'ManageUsers/GetAccount',
type: 'GET',
dataType: 'json',
contentType: 'application/json;',
data: myObject,
});
Ajax 不起作用:
var requestData = JSON.stringify(`
{`
accountId: "123"`
`});
$.ajax({
url: 'ManageUsers/GetAccount',
type: 'GET',
dataType: 'json',
contentType: 'application/json;',
data: requestData ,
});
我在控制器中尝试了不同的组合。
[FromBody]
或 [FromQuery]
不起作用。还尝试返回 ActionResult
而不是 JsonResult
,这不会影响任何内容。
我还注意到,如果我将类型更改为 POST 并将控制器更改为 HttpPost,accountId 将为 null。
你必须决定你需要什么。 Http Get 不适用于 json,因此将 action 属性更改为 post
[HttpPost]
public JsonResult GetAccount([FromBody] Account account)
{
var accountId=account.AccountId;
...
}
并创建一个类
public class Account
{
public string AccountId {get; set;}
}
但恕我直言,最好修复ajax
var accountId: "123";
$.ajax({
url: 'ManageUsers/GetAccount?accountId='+ accountId,
type: 'GET',
dataType: 'json'
....
});