我有一个使用Razor的 ASP.NET MVC应用程序。在我的 Razor 视图中,我使用的是预先编写的 JavaScript 库。该库需要一些 JSON 格式,如下所示:
var options = [
{ id=1, name='Joe', index=3 },
{ id=216, name='Bill', index=1 },
{ id=923, name='Katy', index=2 }
];
我正在尝试从List<MyEntity>
在我的 Razor 视图中填充/生成此数组。为了做到这一点,我有以下几点:
var options= JSON.parse('@Html.Raw(Json.Encode(@Model.Options.Select(c => new { id=c.Id, name=c.FullName, index=c.Position } )))');
当它运行时,我得到一个对象数组。但是,每个对象都有生成为字段的 EACH 属性。有没有办法让我选择特定的字段,以便我可以减少生成内容的大小。这些对象具有数百个属性。因此,从带宽的角度来看,通过网络发送它们变得非常昂贵。
我错过了什么?
我会尽量不要通过执行以下操作来使其过于复杂:
<script>
var options = [];
@{
foreach(var option in @Model.Options)
{
<text>
var obj = {
id:'@(option.Id)',
name: '@(option.Name)',
index: '@(option.Position)'
};
options.push(obj);
</text>
}
}
...
</script>
我过去使用过这段代码并且它有效。 它需要 Json.NET 库:http://www.newtonsoft.com/json
var options = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Options.Select(c => new { id=c.Id, name=c.FullName, index=c.Position } )));