3

コンソール アプリケーションから MVC3 コントローラー アクション (JsonResult) を呼び出しています。呼び出しを行うために、System.Net.Http.HttpClient と PostAsJsonAsync メソッドを使用しています。

PostAsJsonAsync メソッドでは、小さな poco インスタンスを渡しています。

それはすべて、1つのことを除けばうまく機能します。

私の問題は、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; }
}
4

1 に答える 1

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

于 2012-12-27T15:05:24.243 に答える