1

我一直在尝试使用 Razor 使用 Umbraco v6 创建一个博客。

这是我的第一个 Umbraco 项目,所以我仍在处理事情,但我已经设法让大部分工作按我想要的方式工作,但我想在侧面小部件中列出标签。

到目前为止,我有这个 -

@{
    var blogitems = Umbraco.Content("1188").Children.Where("Visible");

    foreach(var blog in blogitems) {
        var tagsplit = blog.tags.Split(',');
        foreach(var tag in tagsplit) {
                <li>                    
                        <a href="/blog/?@tag">@tag</a>
                </li>
        }
    }
}

问题是这列出了所有重复的标签。我试图在 tagsplit 变量上使用 .Distinct ,它只返回一个错误。

有任何想法吗?

4

2 回答 2

0

.Distinct()应该可以工作,但既然不是,一个快速而肮脏的解决方案是:

@{
    var blogitems = Umbraco.Content("1188").Children.Where("Visible");

    foreach(var blog in blogitems) {
        var tagsplit = blog.tags.Split(',');
        var usedTags=new List<string>();
        foreach(var tag in tagsplit) {
            if(!usedTags.Contains(tag)){
                <li>                    
                        <a href="/blog/?@tag">@tag</a>
                </li>
            }
            usedTags.Add(tag);
        }
    }
}
于 2014-06-19T16:37:06.383 回答
0

获取 Umbraco 中的所有标签:

Umbraco.TagQuery.GetAllContentTags().OrderBy(t => t.Text)

您的查询给您重复的原因是因为您的博客项目上有相同的标签,并且您在错误的地方复制。

var tagList = Umbraco.Content(1188).Children
    .Where("Visible")
    .SelectMany( c => c.tags.Split(',') )
    .Distinct()
    .OrderBy( x => x )

将为您提供所有内容中所有标签的有序列表...

于 2015-11-11T03:45:08.713 回答