我有一个使用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 } )))');
当它运行时,我得到一个对象数组。但是,每个对象都将每个属性都生成为字段。有没有办法让我选择特定的字段,以便我可以减少生成的大小。这些对象具有数百个属性。因此,从带宽的角度来看,通过网络发送它们会变得非常昂贵。
我错过了什么?
答案 0 :(得分:0)
我会尝试通过执行以下操作来使其过于复杂:
<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>
答案 1 :(得分:0)
我过去曾使用过这段代码而且它的工作原理。它需要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 } )));