循环引用
我已经阅读了很多关于这种类型的错误:循环引用
“时检测到循环引用而序列化的对象类型...“ 但是,当它发生在ASP.Net MVC Kendo网格操作方法中时,我找不到解决方案。我有以下的操作方法,我想在同一时间插入到另一个相关的表:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SeasonTradeCreate([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<BKP_STRADE> models, decimal? DOC_SEQ)
{
if (models.Any())
{
foreach (BKP_STRADE modelItem in models)
{
Db.BKP_STRADE.Add(modelItem);
BKP_STRADE_ROW BKP_STRADE_ROW_OBJ = new BKP_STRADE_ROW();
BKP_STRADE_ROW_OBJ.BSTR_BSTR_SEQ = modelItem.BSTR_SEQ;
BKP_STRADE_ROW_OBJ.DOC_SEQ = DOC_SEQ;
Db.BKP_STRADE_ROW.Add(BKP_STRADE_ROW_OBJ);
}
Db.SaveChanges();
}
return Json(models.ToDataSourceResult(request, ModelState));
}
的事情是,它插入到两个表正常,但我在手术后得到了下面的错误,以及:
“序列化类型为'Tpph.Models.BKP_STRADE'的对象时检测到循环引用。”
你能不能改
return Json(models.ToDataSourceResult(request, ModelState));
与此
return Json(new[] { models }.ToDataSourceResult(request, ModelState));
感谢您的回答,但我仍然收到相同的错误: “序列化类型为'Tpph.Models.BKP_STRADE'的对象时检测到循环引用。” –
你可以添加你的视图代码吗? –
我的看法没有任何错误。它只是一个简单的Kendo Grid,带有基本选项。 –
这意味着BKP_STRADE集合引用自身的实体之一。 JS序列化程序的默认设置无法处理。有关更多信息,请参阅https://*.com/questions/1153385/a-circular-reference-was-detected-while-serializing-an-object-of-type-subsonic。 –
那我该怎么办?我只想在调用剑道网格的create action方法时插入两个相关的实体。我该怎么做 ? –
@AliRoshanbin:不要将**对象**链接到彼此,而应该只存储他们的** ID **。序列化器试图序列化整个对象,但它试图序列化'myObj1','myObj1.RelatedObj2','myObj1.RelatedObj2.RelatedObj1','myObj1.RelatedObj2.RelatedObj1.RelatedObj2' ,等等...... – Flater