Как разобрать общий список коллекции C # в машинописи - PullRequest
0 голосов
/ 02 января 2019

Это мой код .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 Ответ

0 голосов
/ 02 января 2019

Вам нужно будет сериализовать вашу коллекцию, а затем вывести это сериализованное значение как «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}]" />
...