簡體   English   中英

序列化類型為object的對象時檢測到循環引用

[英]A circular reference was detected while serializing an object of type

我在控制器中嘗試了以下代碼:

List<ProductListingModels> prom = new List<ProductListingModels>();

prom.Add(new ProductListingModels()
{
    ID = item.ID,
    Name = item.Name,
    DepartmentID = item.DepartmentID.Value,
    BrandID = item.BrandID.Value
});

jr.Data = prom;
jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return Json(new
{
    ja = jr.Data,
}, JsonRequestBehavior.AllowGet);

這是我的ProductListingModel:

 public class ProductListingModels:ItemEntityDataContext
 {
   public int ID { get; set; }
   public string Name { get; set; }
   public int DepartmentID { get; set; }
   public int BrandID { get; set; }
 }

這是一個錯誤:

序列化類型的對象時檢測到循環引用。

但是,如果我從添加對象“ prom”更改為添加諸如字符串或整數之類的東西,則效果很好。 我不知道如何添加對象會發生什么問題。

誰能告訴我解決方案。 歡迎來到您所有的問題和答案,非常感謝。

我懷疑問題在於引用ItemEntityDataContext超類可能持有其他對象。 將數據復制到viewmodel類以傳遞到視圖中總是一個好主意。 但是在您的情況下,只需使用LINQ將字段選擇為新的匿名類型並使用json進行序列化即可。 像這樣:

jr.Data = prom.Select(p => new 
{ 
    ID = p.ID, 
    Name = p.Name, 
    DepartmentID = p.DepartmentID,
    BrandID = p.BrandID
}).ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM