MVC:在javascript中迭代Viewbag数组
目标是将数据从MVC:在javascript中迭代Viewbag数组,javascript,asp.net-mvc,arrays,razor,viewbag,Javascript,Asp.net Mvc,Arrays,Razor,Viewbag,目标是将数据从ViewBag.Array获取到Javascript数组。数据是在控制器中计算的,因此我无法直接从数据库中获取数据。我需要数据来用jqplot绘制图表。代码: for(i = 0; i < @ViewBag.Array.Length; i++) { jScriptArray[i] = @ViewBag.Array[i]; } for(i=0;ijavascript通信。服务器已经向视图发送了一个视图模型,如果可以直接执行JSON序列化该模型,那么只执行额外的AJAX
ViewBag.Array
获取到Javascript数组。数据是在控制器中计算的,因此我无法直接从数据库中获取数据。我需要数据来用jqplot绘制图表。代码:
for(i = 0; i < @ViewBag.Array.Length; i++)
{
jScriptArray[i] = @ViewBag.Array[i];
}
for(i=0;i<@ViewBag.Array.Length;i++)
{
jscript数组[i]=@ViewBag.Array[i];
}
问题是
@ViewBag.Array[i]
中的“'i'在当前上下文中不存在”,但jscript数组[i]
中没有问题。非常感谢您的帮助。您可以尝试以下方法:
var array = @Html.Raw(Json.Encode(@ViewBag.Array));
for(var i = 0; i < array.length; i++) {
jScriptArray[i] = array[i];
}
var-array=@Html.Raw(Json.Encode(@ViewBag.array));
对于(var i=0;i
实现目标的最佳方法是创建一个JSON控制器,将数据返回到JSON数组中
您可以从javascript请求数据,然后对其进行处理
希望这有帮助
<script>
var jScriptArray=[];
@{
for(i = 0; i < ViewBag.Array.Length; i++){
<text>jScriptArray[@i] = "@ViewBag.Array[@i]";</text>
i++;
}
}
</script>
您可以使用JsonConvert.SerializeObject
希望这能有所帮助。不,这个。无需为此创建返回JSON的控制器。很抱歉,无法完成此操作,但使用JSON控制器比使用Viewbag进行javascript服务器端通信更好。对于
javascript->server
通信是的,这更好,我同意。但这里我们讨论的是server->javascript
通信。服务器已经向视图发送了一个视图模型,如果可以直接执行JSON序列化该模型,那么只执行额外的AJAX请求将是不好的。谢谢你,救了我一天。二维数组怎么样?使用这种技术,结果是一维的。@JohnMeyer您找到了处理二维viewbag数组的方法了吗?我想我最终是将它传递到模型上的视图,而不是使用viewbag。在我的例子中,它是Json.Serialize
而不是Json.Encode
jScriptArray[0] = "ArrayValue0";
jScriptArray[1] = "ArrayValue1";
jScriptArray[2] = "ArrayValue2";
var array=@Html.Raw(JsonConvert.SerializeObject(ViewBag.Array));