型号:
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。我怎样才能做到这一点?
答案 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);
}
});