Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient.PostAsJsonAsync和MVC控制器操作之间的通信_C#_Json_Asp.net Mvc_Controller - Fatal编程技术网

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

C# HttpClient.PostAsJsonAsync和MVC控制器操作之间的通信,c#,json,asp.net-mvc,controller,C#,Json,Asp.net Mvc,Controller,我有一个C控制器,它应该向另一个发送简单对象模型的远程控制器发出异步调用: HttpClient clientHTTP=新的HttpClient; myModel model=新的myModel; 模型Id=100; model.data=这是数据; var json=Newtonsoft.json.JsonConvert.SerializeObjectmodel; clientHTTP.BaseAddress=新Urihttp://REMOTE_IP/; clientHTTP.PostAsJs

我有一个C控制器,它应该向另一个发送简单对象模型的远程控制器发出异步调用:

HttpClient clientHTTP=新的HttpClient; myModel model=新的myModel; 模型Id=100; model.data=这是数据; var json=Newtonsoft.json.JsonConvert.SerializeObjectmodel; clientHTTP.BaseAddress=新Urihttp://REMOTE_IP/; clientHTTP.PostAsJsonAsync/WebcastNotify/Heat,json .ContinueWithpostTask=>postTask.Result.EnsureAccess状态码; 遥控器:

公共类网络广播NotifyController:控制器 { 公共行动结果热模型 { //始终接收model.Id=0和model.data=null } } 简单的模型是:

公共类modeloWebCast { 公共int Id{get;set;} 公共字符串数据{get;set;} } 为什么我在远程控制器model.id=0,model.data=null处获取allways和空对象

就像People建议的那样,如果我直接传递模型变量,我将接收null对象,而不是像以前一样在控制器中接收具有null属性的对象

我尝试使用一个简单的html页面来测试:

函数发送 { var Url=@Url.ActionHeat,网络广播通知; $.ajax { 类型:post,, url:url, ajaxasync:true, 数据:{modelo:{Id:100,数据:这是数据}, 成功:功能结果{ $CapaInfo.htmlresult; } } } 通过这个代码,对象被完美地发送到控制器

我会做错什么?

PostAsJsonAsync将对象序列化为JSON

您正在向它传递一个字符串,该字符串恰好是序列化的JSON,因此它将该字符串序列化为JSON字符串

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

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


尝试直接传递模型变量。

如果我直接传递对象而不序列化它们,控制器将收到一个空对象。我建议您首先尝试直接从任何http请求生成器调用控制器,如。如果您无法让控制器从正确的请求中获取对象,那么问题就出在控制器中,您应该首先解决这个问题。不过,我同意其他两个答案,您应该直接将模型传递给“PostAsJsonAsync”。我尝试了一个简单的tml-js页面:var UrlDestino=@Url.ActionHeat,WebcastNotify;$。ajax{type:post,url:UrlDestino,ajaxaasync:true,数据:{modelo:{Id:100,modelo:this is data}},成功:函数结果{$CapaInfo.htmlresult;}很好。我试过了,但是如果我直接传递模型变量,那么空值就会到达控制器。@Pila77这听起来像是控制器的问题。你可能需要发布另一个问题来获得帮助。