Ajax 调用 asp.net - 变量始终为空

Ajax call to asp.net - variables always null

我无法 ajax 将值传输到我的 asp.net razorpage 处理程序。 它总是在 razorpage 端接收空值。否则它会工作并且 javascript 没有正确响应。

调用了 C# 函数 "OnPost",但参数始终为空值。

我在这里错过了什么?我看了很多例子,但无法弄清楚。我是否遗漏了必须在项目中设置的内容?如果我应该提供更多代码,请告诉我!

public class TestValues
    {
        public string test1 { get; set; }
        public string test2 { get; set; }
        public string test3 { get; set; }
    }

public class Conf_Parity : PageModel
    {
    public static JsonResult OnPost(TestValues myString)
        {
             var test = myString;
             return new JsonResult("");
        }
    }
}
var output = {
    test1: 'hallo',
    test2: 'peter',
    test3: 'how are you'
};
console.log(output);

$.ajax({
    type: "POST",
    url: "Conf_Parity",
    dataType: "json",
    data: JSON.stringify(output),
    contentType: "application/json; charset=utf-8",                                
    beforeSend: function (xhr) {
        xhr.setRequestHeader("XSRF-TOKEN",
            $('input:hidden[name="__RequestVerificationToken"]').val());
    },                                                                
    failure: function (response) {
        alert(response);
    }
});

我通常不会 post JSON 页面处理程序。很少有这样做的充分理由。在将 JSON.stringify 方法应用于它之前,我只需要 post 表单数据。我只会 post JSON 到需要它的 API 端点。

但是如果你想 post JSON 无论如何,你需要从请求主体访问 JSON 并反序列化它:

public async Task OnPostAsync()
{

    using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
    {
        var body = await reader.ReadToEndAsync();
        var testValues = JsonConvert.DeserializeObject<TestValues>(body);
        // do something with testValues.test1 etc.
    }
}

注意 - OnPostAsync 处理程序没有参数。模型绑定不适用于 JSON.