我正在使用ASP.NET MVC3創建一個博客,並且我想爲它創建一個tagCloud。使用taglink創建標籤雲?
現在我的問題是我如何將它列入一個列表(我需要?),計數,然後打印出不同的大小?
編輯:
我現在能指望每一個標籤在每一個崗位有以下幾點:
Dictionary<string, int> tagLista = new Dictionary<string, int>();
foreach (Post post in Model)
{
foreach (Tag tag in post.Tags)
{
if (!tagLista.ContainsKey(tag.Name))
{
tagLista[tag.Name] = 1;
}
else
{
tagLista[tag.Name] += 1;
}
}
}
//Print out diff. sizes depending on count
foreach (KeyValuePair<string, int> pair in tagLista)
{
if (pair.Value <= 2)
{
<a class="minSize" href="@Href("~/Posts/Tags/" + pair.Key)">@pair.Key</a>
}
if (pair.Value > 2 && pair.Value <= 4)
{
<a class="medSize" href="@Href("~/Posts/Tags/" + pair.Key)">@pair.Key</a>
}
if (pair.Value > 4 && pair.Value >= 6)
{
<a class="maxSize" href="@Href("~/Posts/Tags/" + pair.Key)">@pair.Key</a>
}
}
這裏的問題是,現在它只能顯示當前頁面上的所有帖子的標籤,而不是來自數據庫的所有標籤。我應該怎麼做呢?在此視圖的頂部(索引)我使用:
@using Blog.Models;
@model IEnumerable<Post>
感謝您的任何幫助!
感謝您的回答!我對MVC3真的很陌生,所以我不太瞭解你寫的東西。你能詳細說明嗎?我在下面的評論中提供了一個解決方案....但是我遇到了一個新問題,我認爲你有一點線索! –
基本上它是一個LINQ-Query(用匿名lambda函數的形式編寫,我更喜歡這種語法)。第一種方法SelectMany將獲得標籤的所有集合,然後將一個大的數組排除在外。 GroupBy方法像SQL Group By一樣工作,它按屬性Name進行分組,然後計算已使用Count()分組的標籤數量。 –
非常感謝您的描述!當我習慣使用傳統的ASP.NET時,使用ASP.NET有點麻煩。你能看到爲什麼我的代碼不收集數據庫中的所有標籤嗎?它只顯示當前頁面上的標籤... –