【问题标题】:MVC: Iterating a Viewbag array in javascriptMVC:在 javascript 中迭代 Viewbag 数组
【发布时间】:2011-08-15 09:23:28
【问题描述】:

目标是将数据从ViewBag.Array 获取到一个Javascript 数组。数据是在控制器中计算的,所以我不能直接从数据库中获取它。我需要数据来用 jqplot 绘制图表。代码:

for(i = 0; i < @ViewBag.Array.Length; i++)
{
    jScriptArray[i] = @ViewBag.Array[i];
}

问题是@ViewBag.Array[i] 中的“'i' 在当前上下文中不存在”但在jScriptArray[i] 中没有问题。任何帮助表示赞赏。

【问题讨论】:

    标签: javascript asp.net-mvc arrays razor viewbag


    【解决方案1】:
    var array=@Html.Raw(JsonConvert.SerializeObject(ViewBag.Array));
    

    你可以使用 JsonConvert.SerializeObject 希望这会有所帮助。

    【讨论】:

      【解决方案2】:
      <script>
      var jScriptArray=[];
      @{
          for(i = 0; i < ViewBag.Array.Length; i++){
            <text>jScriptArray[@i] = "@ViewBag.Array[@i]";</text>
            i++;
          }
        }
      </script>
      

      你最终会在 html 文件中得到类似这样的内容:

      jScriptArray[0] = "ArrayValue0";
      jScriptArray[1] = "ArrayValue1";
      jScriptArray[2] = "ArrayValue2";
      

      【讨论】:

        【解决方案3】:

        实现目标的最佳方法是创建一个 JSON 控制器,将数据返回到 JSON 数组中。

        您可以从您的 javascript 请求数据,然后对其进行处理。

        希望对你有帮助

        【讨论】:

        • 不,这是can be done。无需为此创建返回 JSON 的控制器。
        • 很抱歉无法完成,但最好使用 JSON 控制器而不是使用 Viewbag 进行 javascript 服务器端通信。
        • 对于javascript -&gt; server 通信是的,这更好,我同意。但在这里我们谈论的是server -&gt; javascript 通信。服务器已经向视图发送了一个视图模型,如果可以直接执行此操作,那么执行一个额外的 AJAX 请求只是为了 JSON 序列化这个模型是很糟糕的。
        【解决方案4】:

        您可以尝试以下方法:

        var array = @Html.Raw(Json.Encode(@ViewBag.Array));
        for(var i = 0; i < array.length; i++) {
            jScriptArray[i] = array[i];
        }
        

        【讨论】:

        • 这个做到了。谢谢你,拯救了我的一天。
        • 二维数组怎么样?使用这种技术,它最终是一维的。
        • @JohnMeyer 你找到使用二维 viewbag 数组的方法了吗?
        • 我想我最终将它传递给模型上的视图,而不是使用 ViewBag。
        • 在我的例子中是Json.Serialize而不是Json.Encode
        猜你喜欢
        • 2014-02-11
        • 1970-01-01
        • 2015-03-14
        • 2018-05-14
        • 2020-09-07
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多