OkResult不传递泛型列表

本文关键字:泛型 列表 OkResult | 更新日期: 2023-09-27 18:14:50

使用Fiddler进行测试,下面的web api 2方法将返回成功属性正确填写的对象,但结果属性始终为空。在调试器中,列表中有数据,但没有作为响应的一部分发送。

我返回的对象是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 }
);

OkResult不传递泛型列表

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

public class ApiResult
{
    public ApiResult()
    {
        Results = new List<User>();
    }
    public bool Success { get; set; }
    public List<User> Results { get; set; }
}