从视图到控制器的ajax对象不包含数据

时间:2019-02-10 08:10:22

标签: c# jquery .net ajax asp.net-core-mvc

  

>   我.net core 2.2这是对象Object:

[Serializable]
public class oob
{
   public int i { get; set; }
   public string j { get; set; }
}

这是名为Gett的“家庭”控制器中的操作,该操作将oob作为ajax的输入

 [HttpGet]
public IActionResult Gett(oob ww)
{
    return Ok(ww);
}

Ajax

    {
        $.ajax({
            type: "Get",
            url: "Home/gett",
            data: { ww: JSON.stringify({i:55,j:"weqe"})},
            dataType: "json",
            contentType:"json",
            success: function (f) {
                console.log(f);
            },
            error: function (f) {
                console.log(f);
            }
        });
    });

发出请求时,在Gett(oob ww)处,我得到一个值为i = 0且j = null的对象

1 个答案:

答案 0 :(得分:1)

理想情况下,您不应将对象传递给GET请求,而要发布对象,则应使用POST

如果仍然需要,您需要像使用FromQuery一样更改GET方法。

[HttpGet]
public IActionResult Gett([FromQuery] oob ww)
{
    return Ok(ww);
}

然后像下面那样更改您的AJAX通话。

$.ajax({
            type: "Get",
            url: "Home/gett",
            data: {i:55,j:"weqe"},
            dataType: "json",
            contentType:"json",
            success: function (f) {
                console.log(f);
            },
            error: function (f) {
                console.log(f);
            }
        });

注意:如果您将JSON.stringify使用FromQuery来传递对象,则不需要API