#c# #razor #umbraco #blogs #umbraco-tags
#c# #razor #umbraco #Блоги #umbraco-теги
Вопрос:
Я пытался создать блог с помощью 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, которая просто возвращает ошибку.
Есть идеи?
Ответ №1:
.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);
}
}
}
Ответ №2:
Чтобы получить все теги в 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 )
предоставит вам хороший упорядоченный список всех тегов из всего вашего контента…