Web api返回null值

时间:2014-10-20 12:27:48

标签: json angularjs asp.net-web-api angular-http

我有一个Web Api控制器,用于从服务器访问数据:

public class ServicesController : ApiController
{
    [AcceptVerbs("POST")]
    public IList<TreeMenuItem> LoadMetadata()
    {
        List<TreeMenuItem> itemsMenu = new List<TreeMenuItem>();
        TreeMenuItem dataSource = new TreeMenuItem("1", "DataSources", null);
        itemsMenu.Add(dataSource);
        return itemsMenu;
    }
}

由angularJS控制器调用:

angular.module('App').
controller('TreeMenuController', ["$scope", "$http", treeMenuController]);

function treeMenuController($scope, $http) {
var baseUrl = "api/Services/LoadMetadata";
$http.post(baseUrl)
    .then(function (result) {
        $scope.roleList = result.data;
    });

};

在浏览器网络中我有:

Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate
Content-Length:2
Content-Type:application/json;charset=UTF-8

请求有效负载 {}

响应标题:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 4

在“响应”标签中:[{}]。

有什么问题?

1 个答案:

答案 0 :(得分:1)

我让它发挥作用: 当我在浏览器中输入访问api服务的地址(api / Services / LoadMetadata)时,响应消息是一个很大的帮助: 错误答案是在xml文件中,我发现这是对象TreeMenuItem序列化的问题。建议是用DataContract装饰类和DataMember类属性 - 比如在WCF中。在我这样做之后(需要在项目中添加对System.Runtime.Serialization的引用),一切都很完美。