Razbezhkin
@Razbezhkin
программист, преподаватель

Использование ScriptIgnoreAttribute в .net Standard 2.0, какая альтернатива?

Здравствуйте.
В веб приложении на платформе .net Framework 4.7.2. в Action контроллера для отдачи клиенту модели в формате JSON используется следующий код:

return Json(data, JsonRequestBehavior.AllowGet);

Для того чтобы при сериализации не возникало проблем с циклическими ссылками в .net Framework есть атрибут ScriptIgnoreAttribute, которым можно отметить свойства класса модели, чтобы они не сериализовались.

Но у меня с этим возникла проблема: моя модель определена в сборке .net Standard 2.0, и в ней я не нашел подобного атрибута.

Я попытался использовать вместо этого атрибут Newtonsoft.Json.JsonIgnoreAttribute, но он не учитывается стандартным сериализатором.
Я попытался изменить код контроллера на

return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model));

но это потребовало изменения клиентского javascript (в этом случае контент представлял собой строку, которую требовалось парсить на слиенте в объект).

В общем подобный мой подход требовал большого объема работ, чего хотелось бы избежать.

Вопрос: можно ли использовать какой-то аттрибут, который есть в .net Standard и который является аналогом ScriptIgnore для стандартного сериализатора из .net Framework?

Спасибо за внимание.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@NewDevLab
1. return Json(data, JsonRequestBehavior.AllowGet);
это обёртка над JavaScriptSerializer, которому можно задать кастом конверторы, и там игнорить поле.

2. return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model));
должно также работать, если тип возвращаемого контента задать на json.
по F12 посмотреть, что приходит на клиент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы