Web Api 2 OkResult没有传递通用列表

时间:2016-10-25 21:18:08

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

使用Fiddler进行测试,以下web api 2方法将返回正确填充Success属性的对象,但Results属性始终为空。单步执行调试器,列表中有数据,但不作为响应的一部分发送。

我正在返回的对象是由EF生成的代理对象,它也可能与它有关。

public class ApiResult<T>
{
    public ApiResult()
    {
        Results = new List<T>();
    }

    public bool Success { get; set; }
    public List<T> Results { get; set; }
}


[HttpGet]
[Route("test")]
public IHttpActionResult test()
{
    ApiResult<User> rv = new ApiResult<User>();
    rv.Success = true;
    rv.Results.Add(new User { name = "Steve" })
    rv.Results.Add(new User { name = "Dave" })

    return Ok(rv);
}

JSON结果

 {"Success":true,"Results":[{},{}]}

WebApiConfig.cs

config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

1 个答案:

答案 0 :(得分:1)

您将属性结果定义为object的列表。由于类型object没有任何属性,序列化程序返回一个空对象。尝试将结果定义为User的列表,如下所示:

public class ApiResult
{
    public ApiResult()
    {
        Results = new List<User>();
    }

    public bool Success { get; set; }
    public List<User> Results { get; set; }
}