解决此问题的一种方法是关闭延迟加载.....如果我不想关闭延迟加载,还有其他解决方案吗?
我的行为看起来像这样
[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)
}
答案 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; }
}
非常感谢