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

本文关键字:属性 对象 映射 JSON POST AJAX MVC4 | 更新日期: 2023-09-27 18:14:53

型号:

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

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

您需要删除JSON.stringfy((调用,因为jQuery自己做。根据standarts的说法,最好写{"Data":"Hello world"}(引号中的"Data"(。

当将对象传递回服务器时,您指定的是data而不是Data。这可能是问题的根源。还要在AJAX请求中指定contentType

$.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/

相关文章: