sukhchain singh sukhi Ответов: 2

Как решить циклическая ссылка была обнаружена при сериализации объекта типа ошибки.


У меня есть список, в котором каждый элемент списка содержит другой список. Во время рендеринга столбца он выдаст мне ошибку "http://datatables.net/tn/7". Я много искал, но не нашел никакого решения. Пожалуйста, помогите мне преодолеть этот вопрос.

Полная ошибка приведена ниже
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.tblPropertyDocument_C39281F23DAA0C224A777580A8038E1E55D91AF3EBEC9D53EF39EC1E6EAAAD0C'.


Что я уже пробовал:

На самом деле у меня есть список объектов, и внутри каждого объекта у меня есть еще один список. Когда я верну данные в datatable, он сгенерирует циклическую ошибку, связанную с внутренними элементами списка. Я знаю, почему возникает эта проблема, но не знаю, как ее решить.
Ниже приведен мой код:
var SelectedAllSending = AllSending1.Select(s => new OutgoingCommunicationVM()
{
dDate = s.dDate,
id = s.id,
cDescription = s.tblDDLSelect.cDescription,
cSubject = s.cSubject,
Recipients = (from t in db.tblRecipients where (t.nMessageID == s.id) orderby t.cName select t).Take(3).ToList(),
TotalRecords = totalRecords,
PageCount = GetPageCountUSPS(s.id, s.tblDDLSelect.cDescription),
EstimatedCost = GetCost(s.id, s.tblDDLSelect.cDescription)
}).ToList();

как вы видите в моем коде, у меня есть список "SelectedAllSending", и внутри этого списка у меня есть еще один список под названием "получатели".

Когда я верну значение в datatable, он выдаст мне ошибку. Ниже приведен мой код.

return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = SelectedAllSending }, JsonRequestBehavior.AllowGet);

объект внутри объекта дает циклическую ошибку при возврате json. Или как я могу передать список внутри списка в datatable.
пожалуйста, помогите мне преодолеть эту проблему.

2 Ответов

Рейтинг:
1

sukhchain singh sukhi

Спасибо Сатье Пракашу Суэйну за ответ.

Я работал в соответствии с вашим предложением, этот код разрешает циклическую ошибку ссылки, но также делает данные внутреннего списка равными нулю. Мне также нужны данные внутреннего списка.

Пожалуйста, помогите!


Рейтинг:
0

Satya Prakash Swain

Это сработало для меня

3 вещи, необходимые для разрешения круговой ссылки :

1. Применение [JsonIgnore] навигационные свойства

2. В глобальной.эйсакс

Глобальная конфигурация.Конфигурация.Форматеры.JsonFormatter.Сериализаторы.ReferenceLoopHandling = Newtonsoft. Json.Обращение с ссылками.Игнорировать;

3. сериализация данных

строку JSON = JsonConvert.SerializeObject(gridDataResult.GridData, Форматирование.Никто);
return Json(json, JsonRequestBehavior.AllowGet);