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。我怎样才能做到这一点?
您需要删除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/