Ajax Json向控制器操作方法发布null

时间:2016-07-31 20:43:07

标签: jquery json ajax

我有一个剃刀视图,使用以下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。

我还需要添加什么来使数据通过控制器?

1 个答案:

答案 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");
    }
});