Подтвердить что ты не робот

Круговая ссылка была обнаружена при сериализации объекта типа

Я пробовал этот код в контроллере:

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" к добавлению чего-то вроде строки или целого, он работает хорошо. Я не знаю, какая проблема связана с добавлением моих объектов.

Может ли кто-нибудь показать мне решение. Добро пожаловать на все ваши вопросы и ответы, Большое спасибо.

4b9b3361

Ответ 1

Я подозреваю, что проблема связана со ссылками. Суперкласс класса ItemEntityDataContext может содержать другие объекты. Всегда рекомендуется копировать данные в класс viewmodel для передачи в представления. Однако в вашем случае используйте LINQ для выбора полей в новый анонимный тип и сериализации с помощью json. Что-то вроде этого:

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