如何在打字稿中解析 C# 泛型集合列表
how to parse C# generic collection list in typescript
这是我的 .cshtml 代码,
@ { var myList = (List<MyViewModel>)ViewBag.MyCollection; }
<input id="myListHidden" type="hidden" data-my-list="@myList" />
这是我获取上述值的打字稿代码,
let _myList = $('#myListHidden').data('my-list');
这是 return 值,
"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; }
您将需要序列化您的集合,然后将该序列化值输出为 "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()
,razor 引擎将输出:
<input id="myListHidden" type="text" data-my-list="[{"Id":1,"Name":"Bob","Active":true}]" />
这是我的 .cshtml 代码,
@ { var myList = (List<MyViewModel>)ViewBag.MyCollection; }
<input id="myListHidden" type="hidden" data-my-list="@myList" />
这是我获取上述值的打字稿代码,
let _myList = $('#myListHidden').data('my-list');
这是 return 值,
"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; }
您将需要序列化您的集合,然后将该序列化值输出为 "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()
,razor 引擎将输出:
<input id="myListHidden" type="text" data-my-list="[{"Id":1,"Name":"Bob","Active":true}]" />