MVC4无法将对象属性从AJAX POST映射到JSON

时间:2013-05-22 10:03:49

标签: c# ajax asp.net-mvc json asp.net-mvc-4

型号:

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。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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/