【问题标题】:Ajax Call, Multiple Object Parameters, Null at ControllerAjax 调用,多个对象参数,控制器为空
【发布时间】:2020-08-22 22:21:15
【问题描述】:

我正在拔头发。我可以让它与一个进入的对象一起工作,但是当我传递两个对象时它失败了。我知道这很愚蠢。

简单的 POCO:

public class Test
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

这是我的控制器:

    [HttpPost]
    [AllowAnonymous]
    [IgnoreAntiforgeryToken]
    public IActionResult GetTestAjaxCallWithMultiObjsIn([FromBody]Test input, Test inputAnother)
    {
        return  Json(string.Concat(input.FirstName, inputAnother.LastName));
    }

JS 的 Input 和 inputAnother 都是 null

一切都来自 JS

    var input = { FirstName: 'Bart', LastName: 'Simpson' };
    var inputAnother = { FirstName: 'Bart', LastName: 'Simpson' };

    $.ajax({
        url: '/Home/GetTestAjaxCallWithMultiObjsIn',
        type: "POST",
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({input: input, inputAnother: inputAnother}),
        success: function (response) {
            console.dir(response);
        }
    });

数据有什么问题:stringify???

非常感谢!

如果重要,请使用 .NET CORE 3.1

    Request Payload
    {input: {FirstName: "Bart", LastName: "Simpson"},…}
    input: {FirstName: "Bart", LastName: "Simpson"}
     inputAnother: {FirstName: "Bart", LastName: "Simpson"}

要明确:我试图以参数的形式传递给不同的对象

    [HttpPost]
    [AllowAnonymous]
    [IgnoreAntiforgeryToken]
    public IActionResult GetTestAjaxCallWithMultiObjsIn(Test input, Testing inputAnother)
    {
        return  Json(string.Concat(input.FirstName, inputAnother.LastName));
    }

【问题讨论】:

    标签: ajax asp.net-core model-view-controller


    【解决方案1】:

    您不能发送多个不同的对象并将它们绑定到多个不同的参数。使用[FromBody],整个请求正文将绑定到该参数。如果你需要发送多个东西,那么你应该绑定到那个东西的一个可枚举对象,并将 JSON 作为一个对象数组发送。

    【讨论】:

    • 我不需要两个测试,我只是以它为例。我将传入两个完全不同的对象。我会尝试删除 [FromBody]。
    • 那么,你完全不走运了。你误解了我的意思,不是说你可以简单地删除FromBody,如果你要绑定像 JSON 这样的东西,你必须拥有它。不是可选的。关键是你只能咬一口:一个参数。而已。如果您需要两个完全不同的对象,您唯一的选择是创建另一个组成这两个类的类,然后绑定到它。在这种情况下,您当然需要在您发送的 JSON 中反映这一点:对象的对象。
    • 核心改变了模型绑定的实现方式,这种方法曾经在框架中工作。感谢您的帮助!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2019-07-09
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多