javascript - 无法在 JavaScript 中迭代列表

标签 javascript asp.net-mvc

    <script type="text/javascript">
        window.onload = function () {
            for (var i=0;i<@Model.listsinfo.Count;i++)
            {
                $('#work').append($('<div class="col-md-3" id="temp"><label for="text1">'+ '@Model.listsinfo[i].Label' +'</label></div><div class="col-md-3"> <input type="text" placeholder="Alerts" class="form-control" id="text1"> </div>'));
            }
       }
   </script>

在上面的代码中,我从 Controller 传递一个列表并尝试迭代它。但是 @Model.listsinfo[i].Label 不起作用,并且错误表明“i”在当前上下文中不存在。我可以通过提供索引值 @Model.listsinfo[0].Label 来访问列表值,但迭代不起作用。如有任何帮助,我们将不胜感激。

最佳答案

您可以将 Json.EncodeHtml.Raw 一起使用,并将其分配给 JavaScript 数组,然后从那里迭代内容:

<script type="text/javascript">
    window.onload = function () {
            var array = @Html.Raw(Json.Encode(@Model.listsinfo));

            for (var i = 0; i < array.length; i++)
            {
                $('#work').append($('<div class="col-md-3" id="temp"><label for="text1">'+ array[i].Label +'</label></div><div class="col-md-3"> <input type="text" placeholder="Alerts" class="form-control" id="text1"> </div>'));
            }
    }
</script>

注意,Model.listinfo在服务器端处理,迭代发生在客户端,所以需要先将viewmodel数组转换为JS数组,然后将其分配给append 方法。

类似问题:

MVC: Iterating a Viewbag array in javascript

jQuery: How to traverse / Iterate over a list of object

关于javascript - 无法在 JavaScript 中迭代列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46845995/

相关文章:

javascript - 如何使用从后端/API 获得的特定坐标绘制矩形?

css - 编辑 <li> 的 innerhtml 以添加带有图标图像的 <i> 标签

c# - 如何从 c# (asp.net mvc) 中的文本中提取所有 url

.net - 在 ASP.NET MVC 网站上实现搜索

c# - 将模拟参数传递给模拟接口(interface)

asp.net-mvc - ASP.NET MVC - 处理没有返回对象的 ajax 操作的正确方法

asp.net - 使用 JavaScript 重新排列的 ListBox 元素导致回发时发生事件验证错误

javascript - 用于对每个字符彼此相同的元素进行分组的脚本

javascript - 如何全局重写 HTMLElement 原生方法?

javascript - 播放前少做一个html5视频缓冲