ajax - ASP.NET Core Razor ajax POST 请求数据对象为空

标签 ajax asp.net-core razor-pages

有一个简单的ajax POST 请求,必须stringify 一个简单的类并将其传递到POST 请求的正文中,但是服务器端的Person 参数有空(默认)值

// javascript
var person = { "FirstName": "Andrew", "LastName": "Lock", "Age": "31" };
$.ajax({
    type: "POST",
    url: "/UpdatePostBody?handler=Abc",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify(person),
    headers: {
        RequestVerificationToken:
            $('input:hidden[name="__RequestVerificationToken"]').val()
    },
})
    .done(function (result) {
        console.log(result);
});
// C# code
public IActionResult OnPostAbc(Person person)
{
    return new JsonResult("my result");
}

enter image description here

在服务器端,有一个简单的 ASP.NET Core Razor 页面,其中包含一个被命中并返回结果但 person 参数成员没有值的方法。

最佳答案

你的 Pesron 数据是空的是因为你的 Age 在类 Personint 类型。而你的人在 { "FirstName ": "Andrew", "LastName": "Lock", "Age": "31"}string类型,所以获取不到。另外,当你传递json数据时从ajax到handler,你需要在handler中添加[FromBody]。这是一个演示:

cshtml:

<button onclick="postdata()">Abc</button>
function postdata() {
        //change Age type to int
        var person = { "FirstName": "Andrew", "LastName": "Lock", "Age": 31 };
        $.ajax({
            type: "POST",
            url: "/UpdatePostBody?handler=Abc",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(person),
            headers: {
                RequestVerificationToken:
                    $('input:hidden[name="__RequestVerificationToken"]').val()
            },
        })
            .done(function (result) {
                console.log(result);
            });
    }

cshtml.cs:

public IActionResult OnPostAbc([FromBody]Person person)
        {
            return new JsonResult("my result");
        }

结果: enter image description here

关于ajax - ASP.NET Core Razor ajax POST 请求数据对象为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66317436/

相关文章:

typescript - 具有同等重要的服务器端和客户端部分的项目的典型目录结构

c# - ASP.NET MVC 6 中的 TryValidateModel

c# - 后处理程序上的部分页面模型未执行 | ASP.NET Core Razor 页面 2.0

c# - asp.net core 中的部分标签助手和 HTML 助手有什么区别?

c# - 模型绑定(bind)表单中的可编辑表字段(Razor Pages)

如果字符串太长,PHP 不接收 POST

javascript - 在 jQuery 中调用 Ajax 返回数据的 HTML 元素 ID

php - Ajax 。根据Element ID通过$.ajax()函数加载json数据

javascript - 单击按钮发送 Ajax 调用并从 aspx.cs(代码隐藏)获取值到 aspx 页面并将其显示在同一页面的输入字段中

javascript - 函数未定义 C#