2

モデル:

public class JsonRequest
{
    public string Data { get; set; }
}

アクション:

[HttpPost]
    public ActionResult Index(JsonRequest data)
    {
        return new JsonResult()
        {
            Data = string.Format("Data: {0}", data.Data), // data.Data == null here
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };
    }

AJAX:

$.ajax({
        type: 'POST',
        url: '@Url.Action("Index", "Home")',
        cache: false,
        data: JSON.stringify({ data: "Hello World!" }),
        success: function(data) {
            alert(data);
        }
    });

JsonRequest オブジェクトには Index アクションのインスタンスがありますが、その Data プロパティが渡された JSON にマップされていませんでした。どうすればこれを達成できますか?

4

2 に答える 2

2

jQueryがそれ自体を行うため、 JSON.stringify() 呼び出しを削除する必要があります。そして、基準によれば、{"Data" : "Hello world"} ("Data" は引用符で囲みます) と書く方が良いでしょう。

于 2013-05-22T11:02:40.867 に答える
0

オブジェクトをサーバーに戻すときにdatanotを指定しています。Dataこれが問題の根源である可能性があります。また、リクエストに を指定しcontentTypeてください。AJAX

$.ajax({
        type: 'POST',
        contentType: 'application/json',
        url: '@Url.Action("Index", "Home")',
        cache: false,
        data: JSON.stringify({ Data: "Hello World!" }),
        success: function(data) {
            alert(data);
        }
    });

http://api.jquery.com/jQuery.ajax/

于 2013-05-22T10:08:34.330 に答える