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 }
);
您正在将属性Results定义为object
的列表。因为类型object
没有任何属性,所以序列化器返回一个空对象。尝试将结果定义为User
列表,如下所示:
public class ApiResult
{
public ApiResult()
{
Results = new List<User>();
}
public bool Success { get; set; }
public List<User> Results { get; set; }
}