0
,大家好,我就吃这个问题...JSON + LazyLoad
我的User类具有类似下面的属性用户类型的用户类型:
public class User
{
public virtual int Id { get; set; }
public virtual string User { get; set; }
public virtual string Name { get; set; }
public virtual UserType userType { get; set; }
}
我不能返回一个JSON,像这...
[HttpGet]
public JsonResult JSONUsers(string q)
{
IEnumerable<User> model = dataServ.Users.GetUsers(q);
return this.Json(new { Result = model }, JsonRequestBehavior.AllowGet);
}
我得到一个错误:
A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'.
我得到这个错误的原因是延迟加载(至少这是我的理解),以及不良的解决这个问题,我所做的:
public JsonResult JSON(string q)
{
List<User> model = new List<User>();
IEnumerable<User> users= dataServ.Users.Getusers(q);
foreach (var item in users)
{
User user = new User
{
Id = item.Id,
Name = item.Name
};
model.Add(user);
};
return this.Json(new { Result = model }, JsonRequestBehavior.AllowGet);
}
我不认为这是一个好的解决方案在这种情况下,我只需要“Id”和“Name”属性,但是如果我需要所有属性呢?我需要一个一个复制吗? 有人可以告诉我,如果有更好的解决方案?
感谢,
蒂亚戈
好吧,我可以使用一个视图模型,但然后我会有2个类似的类。这是一个非常好的选择吗? Tks分享你的知识。 – Thiago 2011-05-16 19:05:10
@Thiago Guttierre,你不会有他们之间的循环参考。所以,是的,它们会相似(这是[AutoMapper](http://automapper.codeplex.com/)派上用场),并被认为是使用ASP.NET MVC的最佳实践。 – 2011-05-16 19:07:41