2012-12-21 58 views
3

我从控制台应用程序调用MVC3控制器操作(JsonResult)。为了进行呼叫,我使用了System.Net.Http.HttpClient和PostAsJsonAsync方法。如何使用PostAsJsonAsync调用MVC3控制器操作

在PostAsJsonAsync方法中,我传递一个小的poco实例。

这一切都很有用,除了一件事。

我的问题是,我不能在调用MVC3控制器动作时拿起poco实例。谁能告诉我如何做到这一点?

下面的代码:

在控制台应用程序调用代码:

 var client = new HttpClient(); 
     client.BaseAddress = new Uri("http://localhost:50285/"); 

     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     var user = new HashedUser { UserName = "userName", PasswordHash = "abcdef".GetHashCode() }; 

     var response = client.PostAsJsonAsync("app/test", user).Result; 

     var txt = response.Content.ReadAsAsync<string>().Result; 

在MVC3项目接收代码

public class AppController : Controller 
{ 
    public JsonResult Test(HashedUser json) 
    { 
     // Problem: json is always a new instance 
     // of HashedUser and not the one passed in 
     // from the call to this controller action. 

     return Json("qqq ppp 777 888" + json.UserName); 
    } 
} 

public class HashedUser 
{ 
    public string UserName { get; set; } 
    public int PasswordHash { get; set; } 
} 

回答

0

您应该序列,并发送你的POCO作为JSON目的。使用Newtonsoft.Json来做到这一点。下面是一些样本:

http://james.newtonking.com/pages/json-net.aspx http://www.west-wind.com/weblog/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing

相关问题