簡體   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