2013-02-26 68 views
1

我想从C#作为参数传递JSON对象到一个MVC动作,但是当我收到它的价值变成了空传递JSON从C#

任何建议?

var url = "myurl"; 
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
var jsonContent = "{\"addProfileInfo\":{\"Address\" : \"Add Profile\", \"Address2\" : \"add2\", \"ArabicAddress1\" : \"\", \"ArabicAddress2\" : \"\", \"ArabicContactPerson\" : \"\", \"ArabicFirstName\" : \"\", \"ArabicMiddleName\" : \"\", \"ArabicLastName\" : \"\", \"BirthDate\" : \"1998-01-22T00:00:00\", \"CSO\" : 120, \"CompanyActivityId\" : 1, \"ContactPerson\" : \"\", \"Corporate\" : \"No\", \"FaxNumber\" : \"\", \"FirstName\" : \"Add Profile\", \"GeographicalRegionId\" : 58, \"HomeNumber\" : \"0235731789\", \"LastName\" : \"Gamal\", \"LoggedInUserID\" : 1976819, \"MiddleName\" : \"AddProfile\", \"MobileNumber\" : \"01111122829\", \"NationalID\" : null, \"NationalityId\" : 1, \"OccupationId\" : 8, \"OfficeNumber\" : \"\", \"PagerNumber\" : \"0235731739\", \"ParentID\" : 1989567, \"PassportID\" : null, \"Password\" : \"DLDovk65\", \"SendNewsByMail\" : false, \"StateID\" : null, \"StatusID\" : 1, \"StatusReasonID\" : 1, \"TitleId\" : 4, \"UCID\" : \"1007102885\", \"UserAccountManagerID\" : 299489, \"UserComments\" : \"\", \"UserGender\" : 1, \"UserName\" : \"AP.902651\", \"UserPreferredEmail\" : \"[email protected]\", \"ZipCode\" : \"\"},\"sourceName\":\"LDNCRM\"}"; 

streamWriter.Write(jsonContent); 
} 
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
{ 
var responseText = streamReader.ReadToEnd();    
Console.WriteLine(responseText); 
} 
+0

动作是否需要强类型参数?当它为空时,通常意味着该类型不匹配。 – atbebtg 2013-02-26 17:22:35

+0

是的,它需要一个强类型的参数,但我实现了我自己的ObjectFilter从ActionFilterAttribute继承,我将json转换为使用json网络库的强类型对象ActionExecutingContext filterContext参数为null的问题 – hazem 2013-02-26 17:30:46

+0

@atbebtg和btw它正在从jquery ajax调用,但从C#它不我认为我的问题与构建JSON对象 – hazem 2013-02-26 17:32:29

回答

0

是否可以只创建一个C#对象,在JSON功能包裹它,只是传递作为参数传递给你没有得到所有低级别使用JavaScript调用的ActionResult?

+0

这是一个比aswer更多的评论。将问题留给OP作为对问题的评论,而不是将它们发布为答案 – 2013-02-26 18:11:00

0

我使用restsharp(http://restsharp.org/),我相信也可以通过NuGet使用。有了这个图书馆,我可以做到以下几点:

var myObject = new MyActionParameterType();    
var client = new RestClient(ConfigurationManager.AppSettings["ApiBaseUrl"]); 

var request = new RestRequest("myurl", Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.AddHeader("Content-Type", "application/json"); 
request.AddBody(myObject); 

var response = client.Execute(request); 
var content = response.Content; 

该库从强类型对象的JSON字符串处理所有的转换。