Asp.net mvc Json循环引用和';无法对儿童进行评估';关于Linq包括
以下JsonResult返回:Asp.net mvc Json循环引用和';无法对儿童进行评估';关于Linq包括,asp.net-mvc,json,linq,entity-framework,circular-reference,Asp.net Mvc,Json,Linq,Entity Framework,Circular Reference,以下JsonResult返回: A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.IntegerList_76C57D0878505062AEA67E9EB9F708830FA20FDE4F13A53543EC2E6ED84C1A2C' 根据调试器 'Children could not be evaluated' 排队 var in
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.IntegerList_76C57D0878505062AEA67E9EB9F708830FA20FDE4F13A53543EC2E6ED84C1A2C'
根据调试器
'Children could not be evaluated'
排队
var integerLists = db.IntegerLists.Include("Integers");
如果删除include,则此操作将成功运行。同样,如果我改为执行注释代码
在过去,我通过使用[IgnoreDataMember]装饰域模型来解决循环引用问题,但这一次似乎不起作用
控制器
public JsonResult GetIntegerLists()
{
var integerLists = db.IntegerLists.Include("Integers");
//var integerLists = new List<IntegerList>();
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 1,
// Direction = "Ascending",
// Performance = 467,
// Integers = { new Integer { IntegerValue = 34 }, new Integer { IntegerValue = 5654 }, new Integer { IntegerValue = 343 } }
//});
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 2,
// Direction = "Ascending",
// Performance = 637,
// Integers = { new Integer { IntegerValue = 4 }, new Integer { IntegerValue = 646 }, new Integer { IntegerValue = 23 } }
//});
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 3,
// Direction = "Ascending",
// Performance = 235,
// Integers = { new Integer { IntegerValue = 64378 }, new Integer { IntegerValue = 1 }, new Integer { IntegerValue = 533 } }
//});
return Json(integerLists, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult Index(IntegerList viewModel)
{
if (ModelState.IsValid)
{
db.IntegerLists.Add(viewModel);
db.SaveChanges();
}
return View();
}
public JsonResult GetIntegerLists()
{
var integerLists=db.integerLists.Include(“整数”);
//var integerlist=新列表();
//Add(新的IntegerList()
//{
//IntegerListID=1,
//Direction=“升序”,
//性能=467,
//整数={新整数{IntegerValue=34},新整数{IntegerValue=5654},新整数{IntegerValue=343}
//});
//Add(新的IntegerList()
//{
//IntegerListID=2,
//Direction=“升序”,
//性能=637,
//整数={新整数{IntegerValue=4},新整数{IntegerValue=646},新整数{IntegerValue=23}
//});
//Add(新的IntegerList()
//{
//IntegerListID=3,
//Direction=“升序”,
//性能=235,
//整数={新整数{IntegerValue=64378},新整数{IntegerValue=1},新整数{IntegerValue=533}
//});
返回Json(integerList,JsonRequestBehavior.AllowGet);
}
[HttpPost]
公共行动结果索引(整数列表视图模型)
{
if(ModelState.IsValid)
{
db.IntegerLists.Add(viewModel);
db.SaveChanges();
}
返回视图();
}
型号
public class Integer
{
public int IntegerID { get; set; }
public int IntegerValue { get; set; }
public int IntegerListID { get; set; }
public virtual IntegerList IntegerList { get; set; }
}
public class IntegerList
{
public int IntegerListID { get; set; }
public string Direction { get; set; }
public long Performance { get; set; }
public virtual ICollection<Integer> Integers { get; set; }
}
公共类整数
{
公共整数整数ID{get;set;}
公共整数整型值{get;set;}
公共整数整型列表{get;set;}
公共虚拟整数列表整数列表{get;set;}
}
公共类整数列表
{
公共整数整型列表{get;set;}
公共字符串方向{get;set;}
公共长性能{get;set;}
公共虚拟ICollection整数{get;set;}
}
您有一个导航属性返回到它所属的列表。您可能不想在序列化时使用它。使用属性
public class Integer
{
public int IntegerID { get; set; }
public int IntegerValue { get; set; }
public int IntegerListID { get; set; }
[ScriptIgnore]
public virtual IntegerList IntegerList { get; set; }
}
您是否尝试过返回Json(integerLists.ToList(),JsonRequestBehavior.AllowGet)代码>?是-没有区别。