首页 > 解决方案 > 在 ajax 发布到 api 控制器时出现 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);

            //... more logic here


            return true;
        }

我在 javascript 中正确获取了 JSOn.Stringify 数据,但我收到 400 错误,甚至从未在控制器上击中我的断点。我做错了什么,为什么会出现 400 错误?为什么它不能正确识别我的 json 模型?

标签: javascriptc#apiasp.net-core

解决方案


我认为问题出在客户端,尤其是数据部分。在js中创建一个对象并发送它。


推荐阅读