【发布时间】:2017-07-17 05:02:00
【问题描述】:
我已经阅读了很多关于此类错误的信息:
“在序列化 ... 类型的对象时检测到循环引用” 但是当它发生在 ASP.Net MVC Kendo Grid Action Method 中时,我找不到解决方案。我有以下操作方法,我想同时插入另一个相关表:
[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' 类型的对象时检测到循环引用。”
【问题讨论】:
-
这意味着 BKP_STRADE 集合中的一个实体引用了它自己。 JS 序列化程序的默认设置无法处理。请参阅stackoverflow.com/questions/1153385/… 了解更多信息。
-
那我该怎么办?我只想在调用剑道网格的创建操作方法时插入两个相关实体。我该怎么做?
-
@AliRoshanbin:不要将对象相互链接,而是尝试仅存储它们的ID。序列化程序正在尝试序列化您的整个对象,但它在尝试序列化
myObj1、myObj1.RelatedObj2、myObj1.RelatedObj2.RelatedObj1、myObj1.RelatedObj2.RelatedObj1.RelatedObj2等时陷入了无限循环...... -
@Flater:你能写出你建议的可以处理它的代码吗?这样我就能明白了。
标签: c# json asp.net-mvc kendo-grid kendo-asp.net-mvc