Круговая ссылка была обнаружена при сериализации объекта типа
Я пробовал этот код в контроллере:
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" к добавлению чего-то вроде строки или целого, он работает хорошо. Я не знаю, какая проблема связана с добавлением моих объектов.
Может ли кто-нибудь показать мне решение. Добро пожаловать на все ваши вопросы и ответы, Большое спасибо.
Ответы
Ответ 1
Я подозреваю, что проблема связана со ссылками. Суперкласс класса ItemEntityDataContext может содержать другие объекты. Всегда рекомендуется копировать данные в класс viewmodel для передачи в представления. Однако в вашем случае используйте LINQ для выбора полей в новый анонимный тип и сериализации с помощью json. Что-то вроде этого:
jr.Data = prom.Select(p => new
{
ID = p.ID,
Name = p.Name,
DepartmentID = p.DepartmentID,
BrandID = p.BrandID
}).ToArray();