首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历节点并将值存储在umbraco razor中的数组中

循环遍历节点并将值存储在umbraco razor中的数组中
EN

Stack Overflow用户
提问于 2012-12-14 14:32:22
回答 1查看 2.8K关注 0票数 0

我使用的是umbraco4,我想循环遍历节点并将其urlname存储在数组中。所以数组看起来像..。‘’aaa node‘,'bbb-node','ccc-node’。但是下面的代码不起作用...

代码语言:javascript
复制
<script type="text/javascript">
@{
var arr = new Array[10];
var j=0;

foreach (var node in Model.Children.Where("Visible"))
{
  arr[j]=@node.UrlName;
  j++;
}
}
</script>

但是这给出了加载剃刀脚本getnodes.cshtml的错误代码中的错误是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-14 19:41:08

我猜你得到的是一个超出界限的索引异常,因为可能有超过10个节点。

我发现调试razor代码更容易,方法是将其包装在try catch中,然后输出错误。请注意,这实际上只适用于运行时错误。

代码语言:javascript
复制
@try
{
    // Initialize list:
    var list = new List<string>();

    // Add each urlname to the list:
    foreach (var node in Model.Children.Where("Visible"))
    {
        list.Add(node.UrlName);
    }

    // Serialize and output javascript:
    <script type="text/javascript">
        var arr = @Html.Raw(Json.Encode(list));
    </script>
}
catch (Exception ex)
{
    @ex.ToString()
}

我知道,这是一件很难让人动心的事情。Razor代码在服务器端评估,javascript在客户端评估。因此,这意味着他们两个人没有真正的合作方式。

我们对script标记之间的代码行所做的是写出将由浏览器在下载呈现的页面后运行的javascript。就razor而言,它只是在那个位置写出了一个字符串。尽管这两种语言的某些部分看起来很相似,但razor对javascript一无所知。Json.Encode (razor)将列表对象序列化为json。Html.Raw (剃刀)确保输出没有编码。(删除它并在浏览器中查看页面的源代码,以了解为什么需要这样做。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13873818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档