Как отправить Список из контроллера / Просмотр в JS скрипт - PullRequest
1 голос
/ 20 апреля 2019

У меня есть список на странице Razor, который я хочу использовать в java-скрипте. Я использую viewdata для отправки данных для просмотра. По какой-то причине VIewbag работает на странице бритвы.Я использую .net core 2.2

Вещи, которые я уже пробовал.

Просмотр

Вещи, которые я уже пробовал:

  1. var a = @Model.listname
  2. var stringArray = @ Html.Raw (Json.Serialize (ViewData ["Quest"])); `viewdata [Quest] содержит список
  3. строка jsonn = JsonConvert.SerializeObject (quelist); `, а затем отправьте jsoon для просмотра.
  4. с помощью пользовательского объекта класса и создайте объект json для создания с помощью Newtonsoft.Json и отправьте для просмотра

Если вы предлагаете решение ajex, объясните егонемного, как я не знаю много об этом или поделиться ссылкой для объяснения

Razor page .cs файл прокомментировал вещи, которые не

public async Task OnGetAsync()
{           
  ViewData["opt1"] = o1list;
  ViewData["quest"] = quelist;
  //   string jsonn = JsonConvert.SerializeObject(quelist);
  //   ViewData["Jon"] = jsonn;
  QuestionBank = await _context.QuestionBank
                .Include(q => q.QuestionLevel)
                .Include(q => q.QuestionStyle)
                .Include(q => q.Teacher)
                .Include(q => q.Topic).ToListAsync();
   Answer = await _context.Answer.ToListAsync();
   QSID = await _context.QSID.ToListAsync();

View

    @{var name = (List<String>)ViewData["Quest"]; }
    <script>
    /*function test() {
    var array = @Html.Raw(Json.Serialize(ViewData["Jon"]));
    for(var i = 0; i < array.length; i++) {
        alert(array[i]);
        console.log(array[i]);
    }
    }
    test();
    */</script>
</head>
<body>
    @{
          Model.run();
          var name = (List<String>)ViewData["Quest"];
          var nam = (List<String>)ViewData["opt1"];
          int j = 0;
          for (int i = 0; i <= 4; i++)
          {
              var a = name[i];
              <p > @a </p>

              <form action="">
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]
                  @{j = j + 1; }
              </form>
          }
    }

Я ожидаю получить массив, содержащий мой список или в формате json

1 Ответ

0 голосов
/ 06 мая 2019

Вот как я делаю это в проекте, который я создал:

<script>
    var saleTypesById = @Html.Raw(JsonConvert.SerializeObject(Model.TypesById));
</script>

Где Model.TypesById является Dictionary<long,SaleType>.

Для использования из JavaScript я вызываю:

var selectedSaleType = saleTypesById[selectedId];

Тогда я могу просто вызвать свойства для него, например selectedSaleType.Comission

Для этого кода требуется директива @using Newtonsoft.Json; и ссылка на соответствующий пакет слепков.

...