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