Как разобрать общий список коллекции C# в машинописи

Это мой код.cshtml,

  @ { var myList = (List<MyViewModel>)ViewBag.MyCollection; }
    <input id="myListHidden" type="hidden" data-my-list="@myList" />

И это мой машинописный код, чтобы получить значение выше,

     let _myList = $('#myListHidden').data('my-list');  

И это возвращаемое значение,

      "System.Collections.Generic.List`1[MyProject.Data.ViewModels.MyViewModel]"

Я просто хочу перебрать эту коллекцию. Это то что я пробовал

     for (let entry of _myList ) {
         console.log(entry);
       }

Но это дает вывод как System.Collections.Generic.List как строка
Я хочу перебрать все значения внутри этой коллекции.

редактировать

Свойства MyViewModel следующие:

    public long Id { get; set; }
    public string Name { get; set; }
    public bool Active { get; set; }

1 ответ

Решение

Вам нужно будет сериализовать вашу коллекцию, а затем вывести это сериализованное значение как "Raw" (иначе движок бритвы выйдет из вашего JSON, а вы этого не хотите)

@using Newtonsoft.Json;

@{
   var myList = JsonConvert.SerializeObject(ViewBag.MyColection);
}

<input id="myListHidden" type="hidden" data-my-list="@Html.Raw(myList)" />

В этом примере я использую сериализатор Newtonsoft. Вы можете использовать его, установив пакет NuGet.

Выше будет сгенерировано что-то вроде этого:

<input id="myListHidden" type="text" data-my-list="[{"Id":1,"Name":"Bob","Active":true}]" />

Затем вы можете использовать значение, как вы хотите

РЕДАКТИРОВАТЬ:

Обратите внимание, что если вы не используете @Html.Raw() двигатель бритвы выведет это:

<input id="myListHidden" type="text" data-my-list="[{&quot;Id&quot;:1,&quot;Name&quot;:&quot;Bob&quot;,&quot;Active&quot;:true}]" />
Другие вопросы по тегам