我有MVC 3应用程序,我在c#中有Dictionary<String,int>
类型的字典。我已使用ViewBag将此字典传递给Index操作中的Layout视图。布局视图由jquery代码组成。在这里,我想在jquery中按如下方式构建数组。
var s1 = [['06/15/2009 16:00:00', 112000], ['06/16/2009 16:00:00', 122000], ['06/17/2009 16:00:00', 104000], ['06/18/2009 16:00:00', 99000], ['06/19/2009 16:00:00', 121000],
['06/20/2009 16:00:00', 148000], ['06/21/2009 16:00:00', 114000], ['06/22/2009 16:00:00', 133000], ['06/22/2009 16:00:00', 161000], ['06/23/2009 16:00:00', 173000]];
如何通过使用viewbag传递的字典构建上面的jquery数组循环。
答案 0 :(得分:4)
如何通过使用viewbag传递的字典构建上面的jquery数组循环。
首先,首先没有 jquery array 这样的概念。它被称为javascript array。第二个为什么你想要循环?
使用JSON序列化程序为您完成工作:
@model Dictionary<string, int>
<script type="text/javascript">
var s1 = @Html.Raw(
Json.Encode(
Model.Select(x => new object[] { x.Key, x.Value })
)
);
</script>
哦对不起,我忘了您正在使用ViewBag
而不是查看模型(这是您应该使用的模型)。在这种情况下,您需要将填充到此ViewBag中的任何内容转换为相应的类型,然后才能对其执行有用的操作(例如LINQ查询):
<script type="text/javascript">
var s1 = @Html.Raw(
Json.Encode(
((Dictionary<string, int>)ViewBag.SomeDict).Select(x => new object[] { x.Key, x.Value })
)
);
</script>