繁体   English   中英

Umbraco Razor c#列出唯一标签

[英]Umbraco Razor c# Listing unique tags

我一直在尝试使用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。

有任何想法吗?

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

会为您提供所有内容中所有标签的漂亮且有序的列表...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM