伙计们,我对此有疑问......
我的User类有一个属性UserType userType,如下所示:
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 );
}
我收到了一个错误:
检测到循环参考 在序列化类型的对象时 'System.Reflection.RuntimeModule'。
我收到此错误的原因是Lazy-Load(至少这是我所理解的),并且很难解决它,我做了:
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 );
}
我不认为这是一个很好的解决方案。在这种情况下,我只需要de“Id”和“Name”属性,但是如果我需要所有属性呢?我必须一个一个地复制吗? 任何人都能告诉我是否有更好的解决方案吗?
谢谢,
蒂亚戈
答案 0 :(得分:3)
但总结一下: USE VIEW MODELS =&gt;顺便说一下,我正在回答关于ASP.NET MVC的StackOverflow上一半以上问题的解决方案。