Umbraco Razor c#列出唯一标签

本文关键字:唯一 标签 Razor Umbraco | 更新日期: 2023-09-27 18:09:29

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

这是我的第一个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,它只返回一个错误。

任何想法?

Umbraco Razor c#列出唯一标签

.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);
        }
    }
}

获取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 )

会给你一个很好的,有序的列表,所有的标签从你的所有内容…