Добавить динамические элементы в уже существующую модель в .NET MVC - PullRequest
1 голос
/ 02 июля 2019

Я создаю панель управления (в проекте .NET MVC), которая в основном получает данные через API и отображает их в (несколько причудливом) виде.

Данные, которые я получаю, отформатированы в json, и я знаю формат «корня» (не уверен, что это правильный термин при разговоре о json, не стесняйтесь меня поправлять), что-то вроде этого:

{
response : 
  {
  fields :
    [{
      name : name1,
     },
     {
      name : name2,
     },
     ...
    ],
  results :
    [{
      name1 : value1,
      name2 : value2
     },
     {
      name1 : value3,
      name2 : value4
     },
     ...
    ]
  }
}

Как видите, массив 'results' варьируется от одного ответа к следующему, причем имена 'name1' и 'name2' генерируются пользователем (то есть непредсказуемо). Теперь я могу десериализовать json для извлечения массива 'fields' и его значений, используя эту модель:

namespace WebApplication1.Models
{
    public class Field
    {
        public string name { get; set; }
    }

    public class Result
    {
    }
    public class JsonResponse
    {
        public List<Field> fields { get; set; }
        public List<Result> results { get; set; }
    }
}

Моя проблема:

когда я передаю это в представление, массив 'results' заполняется пустыми 'Objects' (что кажется нормальным, поскольку они не описаны в модели)

results: Array(5)
0: {}
1: {}
2: {}
3: {}
4: {}

Моя цель:

Я хочу иметь возможность добавить правильное описание «результатов» в модель (которое я могу получить из массива «полей») перед передачей его в представление, чтобы все данные были доступны в представлении.

Вещи, которые пытались:

  1. отправка Json в виде строки в представление и синтаксический анализ его с помощью JavaScript, но это не работает, поскольку мы используем зависимый от модели движок для отображения наших данных

  2. с использованием dynamicObj для декодирования json, но я не смог передать его в представление (так как это не модель)

  3. плачет, но это (удивительно) тоже не сработало.

  4. вероятно, кое-что еще, что я сейчас забуду.

Я искал в Интернете в течение нескольких дней решение, и я впадаю в отчаяние, любые идеи приветствуются.

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2019

Итак, для тех, кто ищет это в будущем, я использовал обходной путь, поскольку не нашел решения этой проблемы.

Вместо динамической модели я переписал «Результат».'class as следующим образом:

    public class Result
    {
        public List<KeyValuePair<string, string>> values { get; set; }
    } 

, который я могу заполнить при получении данных от API.

Это немного усложняет обработку данных в представлении, но на самом деле это не такплохо.

Ps Я не отмечаю это как ответ, поскольку это просто хороший обходной путь

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