这是我的.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; }
答案 0 :(得分:2)
您将需要序列化集合,然后将该序列化的值输出为“ 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}]" />