在向API控制器发送的ajax请求中遇到了400错误。

10 浏览
0 Comments

在向API控制器发送的ajax请求中遇到了400错误。

我有以下的JavaScript函数,用于将数据发送到我的控制器(asp .net core 3.1项目):

function saveState() {
    const gridInstance = $("#ClaimsGrid").dxDataGrid("instance");
    var userstate = gridInstance.state();
    var data = { StateTypeID: 1, StateChange: userstate };
    $.ajax({
        type: "POST",
        data: JSON.stringify(data),
        url: "/api/PostUserState",
        contentType: "application/json",
        success: function () {
            alert("Your grid profile has been saved");
        },
        error: function () {
            alert("An error occurred during save of your grid profile");
        }
    });
}

我的控制器正在寻找名为UserStateChange的模型,该模型定义如下:

public class UserStateChange
{
    public int StateTypeID { get; set; }
    public string StateChange { get; set; }
}

控制器代码本身如下:

[HttpPost("/api/PostUserState")]
public bool PostUserState([FromBody] UserStateChange state)
{
    var UserID = new Guid(HttpContext.Session.GetString("UserId").ToString());
    UserState mod = new UserState();
    var cur = _context.UserState.First(a => a.AppUserID == UserID && a.StateTypeID == state.StateTypeID);
    //... 更多逻辑
    return true;
}

我在JavaScript中正确地获取了JSON.stringify的数据,但我收到了400错误,并且甚至没有命中我的控制器断点。我做错了什么?为什么会出现400错误?为什么它没有正确地识别我的JSON模型?

0
0 Comments

问题出现的原因是客户端的数据部分有错误。

解决方法是在js中创建一个对象并发送它。

确保控制器能在Postman中正常工作,然后查看此链接,你会发现你的有效负载是错误的。

0