MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组

MVC: Iterating a Viewbag array in javascript using the Web Forms view engine

本文关键字:javascript 迭代 Viewbag 数组 引擎 使用 Web 窗体 视图 MVC      更新时间:2023-09-26

我正在尝试用javascript迭代由控制器放入ViewBag中的字符串数组的内容。

在控制器中:

ViewBag.Addresses = new string[] {"a", "b", "c"};

在视图中:

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {
        var array = How do I get "a", "b" and "c" here?;
        for (var i = 0; i < array.length; i++) {
            doSomething(array[i]);
        }
    }
</script>

我搜索了很多答案,但似乎只找到了剃刀视图引擎的解决方案。网络表单呢?

在您的视图中

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {
        var array = <%= Html.Raw(ViewBag.Addresses)%>;
            for (var i = 0; i < array.length; i++) {
                document.write(array[i]);
            }
        }
</script>

然后从您的控制器内:

JavaScriptSerializer js = new JavaScriptSerializer();
//serializes array into json
ViewBag.Addresses = js.Serialize(new[] { "a", "b", "c" });

就我个人而言,我会考虑创建一个视图模型,并将数组序列化到视图模型上的一个属性中,然后在您的视图中执行此操作:

<script language="javascript" type="text/javascript">
    function ExecuteOnLoad() {
        var array = <%= Html.Raw(Model.Addresses)%>;
            for (var i = 0; i < array.length; i++) {
                document.write(array[i]);
            }
        }
</script>