c#web api post request null

时间:2016-01-06 14:18:34

标签: c# web-applications asp.net-web-api

使用c#web api服务器。

我的客户电话看起来像:

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? '='+JSON.stringify(data) : data),
    dataType: "json",
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});

我的C#服务器方法如下:

[HttpPost, Route("All/GetMyTeam")]
public POST_GetMyTeam_Response Post(GetMyTeam_Request request)
{
    return new POST_GetMyTeam_Response();
}

现在,当我使用' Advanced Rest Client'这是谷歌的Chrome插件,我的要求非常好。 但是,如果我发送同样的请求(我在Chrome的调试窗口的网络区域中看到),有​​效负载是相同的,请求到达但内部的所有字段都为空。

public class GetMyTeam_Request
{
    public string UserId;
    public string TeamId;
}

我也试过从json客户端删除'=',但我注意到大多数答案导致了这个添加(尽管他们从未告诉它假设用撇号包装,但是否则它不起作用) 。 试图在ajax请求的头文件或as-is字段中添加contentType-application / json ..

TIA。

1 个答案:

答案 0 :(得分:2)

在你的ajax请求中指定

contentType: 'application/json'

并且您也不需要在json字符串数据之前附加"="字符串

data: (method === "POST" ? '='+JSON.stringify(data) : data),
                         //^^^^ here

删除=符号,它应该有效。

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? JSON.stringify(data) : data),
    dataType: "json",
    contentType: 'application/json',
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});