如何从模型中数组以在mvc中使用jquery

时间:2016-03-18 17:03:58

标签: c# jquery asp.net-mvc

我需要在razor中循环遍历模型集合,然后在客户端的jquery中使用该集合

我需要类似var MyArray = @ item.TagName的东西,之后我需要在客户端使用带有jquery的MyArray 这是我的代码

  @foreach (var item in Model.Tags)
  {

          @item.TagName

   }

谢谢

2 个答案:

答案 0 :(得分:1)

我使用Json.Encode做了一个小例子:

@{
    var list = new List<TagItem>() {
        new TagItem() { TagName = "1" },
        new TagItem() { TagName = "2" },
        new TagItem() { TagName = "3" },
        new TagItem() { TagName = "4" },
        new TagItem() { TagName = "5" },
        new TagItem() { TagName = "6" },
        new TagItem() { TagName = "7" },
        new TagItem() { TagName = "8" }
    };

    var onlynames = list.Select(x => x.TagName);
}

@section Scripts {
    <script>
        var json = @Html.Raw(Json.Encode(list));
        var json1 = @Html.Raw(Json.Encode(onlynames));
    </script>
}

变量json将是TagItems的数组,json1将是一个名称数组。

json的价值

[Object, Object, Object, Object, Object, Object, Object, Object]

每个对象都包含其中的属性TagName

json1将直接为字符串。

["1", "2", "3", "4", "5", "6", "7", "8"]

答案 1 :(得分:0)

您在服务器上执行的代码。其目的是呈现HTML标记,浏览器将稍后处理。由于HTML可以包含JS代码,因此您可以呈现包含所需数据的SCRIPT标记。

例如:

<script>

    var arr = [];

         @foreach (var item in Model.Tags)
          {

                 arr.push("@item.TagName");

           }
</script>

这应该放在使用arr变量的代码之前/之上。我只猜到arr.push("@item.TagName");中与引号相关的语法;它可能需要一些调整,但结果,你想在浏览器的页面源中看到类似的东西:

<script>    
    var arr = [];    
    arr.push("tag1");
    arr.push("tag2");
</script>

编辑:也许在@foreach

中尝试此操作
"arr.push(\"" + @item.TagName + "\";"