我需要在razor中循环遍历模型集合,然后在客户端的jquery中使用该集合
我需要类似var MyArray = @ item.TagName的东西,之后我需要在客户端使用带有jquery的MyArray 这是我的代码
@foreach (var item in Model.Tags)
{
@item.TagName
}
谢谢
答案 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 + "\";"