我有一个剃刀视图,使用以下AJAX Jquery将UserData对象发布到控制器。它调用action方法,但在控制器中调试时参数中的值为null。我在类似的问题上查看了网络和stackoverflow,但仍然无法看到以下代码缺失:
在我的剃刀视图中:
$(document).ready(function(){
$('#button').click(function(e){
e.preventDefault();
var UserData = {"name":"test"}
$.ajax({
url: '/Home/Send/',
data : JSON.stringify(UserData),
type: 'POST',
traditional: true,
contentType: 'json',
success: function (data) {
$('#message').html("json data was sent to controller");
}
});
})});
在我的控制器中:
[HttpPost]
public JsonResult Send(UserData userdata)
{
return Json(new { status = true });
}
public class UserData
{
public string name { get; set; }
}
UserData对象与我在AJAX帖子中发送的对象匹配,但控制器操作方法中的参数值为null。
我还需要添加什么来使数据通过控制器?
答案 0 :(得分:2)
将您的contentType更改为'application/json'
。这告诉ASP.NET MVC将请求主体反序列化为JSON,它将修复控制器上的空值。
您的ajax代码看起来与此类似:
var UserData = {"name":"test"}
$.ajax({
url: '/Home/Send/',
data : JSON.stringify(UserData),
type: 'POST',
traditional: true,
contentType: 'application/json',
success: function (data) {
$('#message').html("json data was sent to controller");
}
});