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,它只返回一个错误。
任何想法?
.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 )
会给你一个很好的,有序的列表,所有的标签从你的所有内容…