1

パラメータに JSON 文字列を指定して、GET リクエストを送信しようとしています。次のようになります。

var params = { "Url": "http://www.asdf.com", "Users": [{ "Name": "Bob" }, { "Name": "Bill"}] };

サーバー側でjQueryのget、クエリ文字列を介して送信すると、次のようになります。

Url=http%3a%2f%2fwww.asdf.com&Users%5b0%5d%5bName%5d=Bob&Users%5b1%5d%5bName%5d=ビル

問題は、モデルが URL プロパティを取得し、users 配列に 2 つの項目が表示されることですが、ユーザー名は null のままです。

これを修正する方法はありますか?

編集:

これはモデルです:

public class Parameters
    {
        public string Url { get; set; }
        public User[] Users { get; set; }
    }

    public class User
    {
        public string Name { get; set; }
    }
4

1 に答える 1

3

JSON データをアクション メソッドにPOSTすることができ、正常に動作します。MVC3 は、JSON 入力のモデル バインディングを行います。

ajax 呼び出しを行うときは、必ずcontentTypeプロパティの値を指定してください。

var params = JSON.stringify(  { "Url": "http://www.asdf.com", 
                                "Users": [{ "Name": "Bob" }, 
                                          { "Name": "Bill"}] });
$.ajax({
    url: '@Url.Action("AcceptJson","Home")',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',   
    data: params, 
    success: function (r) {

    }
});

このようなアクションメソッドがあると仮定します

[HttpPost]
public ActionResult AcceptJson(Parameters model)
{
    if (model != null)
    {
        //check properties of model
    }        
    return Content("ha ha! Json works! Do something useful");
}

モデル バインディングは正常に機能します。 ここに画像の説明を入力

于 2012-10-04T02:53:52.440 に答える