[英]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.