【问题标题】:A circular reference was detected while serializing an object of type .. in ASP.Net MVC Kendo Grid Action Methods在 ASP.Net MVC Kendo Grid Action Methods 中序列化类型为 .. 的对象时检测到循环引用
【发布时间】: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。序列化程序正在尝试序列化您的整个对象,但它在尝试序列化myObj1myObj1.RelatedObj2myObj1.RelatedObj2.RelatedObj1myObj1.RelatedObj2.RelatedObj1.RelatedObj2 等时陷入了无限循环......
  • @Flater:你能写出你建议的可以处理它的代码吗?这样我就能明白了。

标签: c# json asp.net-mvc kendo-grid kendo-asp.net-mvc


【解决方案1】:

你能改吗

return Json(models.ToDataSourceResult(request, ModelState));

有了这个

return Json(new[] { models }.ToDataSourceResult(request, ModelState));

【讨论】:

  • 感谢您的回答,但我仍然收到相同的错误:“在序列化 'Tpph.Models.BKP_STRADE' 类型的对象时检测到循环引用。”
  • 我的视图没有任何错误。它只是一个带有基本选项的简单剑道网格。
  • 您在哪个部分遇到错误?在控制器或视图中?
猜你喜欢
  • 2012-09-26
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2012-12-01
相关资源
最近更新 更多