如何在打字稿中解析 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="[{&quot;Id&quot;:1,&quot;Name&quot;:&quot;Bob&quot;,&quot;Active&quot;:true}]" />