我的Web Api操作返回所有数据而不是一个

时间:2016-05-16 06:04:03

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

解决此问题的一种方法是关闭延迟加载.....如果我不想关闭延迟加载,还有其他解决方案吗?

我的行为看起来像这样

[ResponseType(typeof(AspNetUsers))]
public IHttpActionResult Get(string id)
{

    var user = db.AspNetUsers.FirstOrDefault(s => s.UserName == id);
    if (user == null)
        return null; //":کاربر نامعتبر";
    JsonResult js = new JsonResult();
    js.Data = user;
    js.ContentEncoding = Encoding.UTF8;
    js.ContentType = "Application/json";
    js.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
    //var returnUser = user.UserName + user.Email + user.FirstName + user.LastName +
    //                 user.AspNetRoles.Select(s => s.Name);
    return Ok(js);/// or return ok(user)
}

2 个答案:

答案 0 :(得分:1)

您正在混合使用MVC和Web Api概念和对象。

Array ( [1] => Array ( [Order] => Alan Donald [Hows_out] => b Ian Botham [bowler] => Ian Botham ) . . . ) 是MVC派生的JsonResult对象,而ActionResult与Web API相关联。

另外,如果您不想返回所有数据,则不要。构造一个新的对象结果模型并仅返回所需的内容。

IHttpActionResult

答案 1 :(得分:0)

我解决了我的问题,在Nkosi答案中没什么变化.....

 [ResponseType(typeof(UserModel))]
    public IHttpActionResult Get(string id)
    {

        var user = db.AspNetUsers.Include(a=>a.AspNetRoles).Where(s => s.UserName == id).FirstOrDefault();
        if (user == null)
            return NotFound();

        var data = new UserModel
        {
            UserName = user.UserName,
            Email = user.Email,
            FirstName = user.FirstName,
            LastName = user.LastName,
            Roles = user.AspNetRoles.Select(s => s.Name).ToArray()
            //...other properties you want to return
        };
        return Ok(data);
    }

    public class UserModel
    {
        public string UserName { get; set; }
        public string Email { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string[] Roles { get; set; }
    }

非常感谢