Как разобрать общий список коллекции 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="[{"Id":1,"Name":"Bob","Active":true}]" />