HttpClient.PostAsJsonAsync和MVC控制器操作之间的通信

时间:2017-10-26 16:02:34

标签: c# json asp.net-mvc controller

我有一个C#控制器应该对另一个发送简单对象(模型)的远程控制器进行异步调用:

public class modeloWebCast
{
    public int Id { get; set; }
    public string  data { get; set; }
}

遥控器:

function Send()
{
    var Url = "@Url.Action("Heat", "WebcastNotify")";

    $.ajax(
    {
        type: "post",
        url: Url,
        ajaxasync: true,
        data: {modelo:{ Id: 100, data: "this is the data"}},
        success: function (result) {
            $("#CapaInfo").html(result);
        }
    })
}

简单的模型:

adb devices

为什么我在远程控制器上获取allways和空对象(model.id = 0,model.data = null)

像peopple建议的那样,如果我直接传递模型变量,我会在控制器中接收到null对象(不是像以前那样具有null属性的对象)。

我尝试使用简单的html页面进行测试:

java -jar appium-repl-0.2.0-BETA1.jar

使用此代码,对象将完美地发送到控制器。

我能做错什么?

2 个答案:

答案 0 :(得分:2)

PostAsJsonAsync()将对象序列化为JSON。

您传递的是一个字符串(恰好是序列化的JSON),因此它将其序列化为JSON字符串("...")。

您需要将实际对象传递给它。

答案 1 :(得分:1)

我相信PostAsJsonAsync方法接受正常类型的值,并且不希望它已经被序列化。

请参阅the MSDN page

尝试直接传递model变量。