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({
        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

您需要删除 JSON.stringify() 调用,因为 jQuery 自己做。根据标准,最好写成 {"Data" : "Hello world"} (引号中的“Data”)。

于 2013-05-22T11:02:40.867 回答
0

好吧,您在将对象传递回服务器时指定data不。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 回答