我正在使用VB.NET 3.5的CMS,我卡在一個概念。我有不同的模塊,可以完成不同的任務,比如wysiwyg,聯繫表單,圖像庫等等......但是,一個正在成爲一個挑戰的問題是圍繞着「如何」構建站點地圖。編譯概念需要建立一個頁面的網站地圖
爲了記錄,我不是在談論SEO站點地圖(XML),而是一個類似Karamasoft的訪問者站點地圖(查看寶馬或戴爾風格瞭解我所拍攝的內容)。
我的數據庫具有以下的列
ID ParentID MenuName Slug DateUpdated
1 Null Home ~/home 01/01/2010
2 Null About ~/about 01/01/2010
3 Null Contact ~/contact 01/01/2010
4 2 History ~/history 01/01/2010
5 2 Future ~/future 01/01/2010
6 3 Jobs ~/jobs 01/01/2010
我有我的代碼安裝在我填充所有相關領域到服務器端,我可以再訪問多次,沒有擊中對象這樣的方式DB一遍又一遍。
Public Shared ReadOnly Property Instance() As List(Of NavigationDataItem)
Get
Dim n As New List(Of NavigationDataItem)()
If _Instance Is Nothing Then
Dim PagesDC As New Dal.icms_PagesDataContext()
Dim results = PagesDC.icms_Pages_GetPageMenu().ToList
For Each o As Object In results
If o.isHomePage Then
n.Add(New NavigationDataItem(o.ID, o.ParentID, o.MenuName, "~/", o.DateUpdated))
Else
n.Add(New NavigationDataItem(o.ID, o.ParentID, o.MenuName, o.Slug, o.DateUpdated))
End If
Next
_Instance = n
Else : n = _Instance
End If
Return n
End Get
End Property 'Instance
我試圖做的是有所有這一切都沒有PARENTID記錄(IE:他們是頂級項目)在頂部列出,並且它的所有列下面的孩子。
<table>
<tr>
<th>Home</th>
<th>About</th>
<th>Contact</th>
</tr>
<tr>
<td> </td>
<td>History</td>
<td>Jobs</td>
</tr>
<tr>
<td> </td>
<td>Future</td>
<td> </td>
</tr>
</table>
我希望能夠動態地設置表中的列數,所以,如果我有10名家長的項目,只把我的寬度5列,剩下的父項目將在下面的另一個錶行上市。
我敢肯定,我可以自己構建代碼,一旦我將自己的頭圍繞在這裏,我只是在尋找關於如何解決這個問題的「概念」。
此外,我不是在尋找一個Treeview,因爲這基本上是我現在正在做的,我真的不喜歡它。
感謝您的詳細解答。你能詳細說明一下asp.net站點地圖嗎?我不是在尋找「web.sitemap」,所以我不完全確定你在說什麼。 – 2010-02-28 05:37:46
我只是說,從我所知道的情況來看,您正在實現的功能已經存在於ASP.NET站點地圖中。如果你需要更動態的東西(即從數據庫中讀取菜單結構),至少考慮以sitemap格式提取出來,以便將其插入到ASP.NET框架中。實施自定義Sitemap提供程序非常簡單。 :) http://msdn.microsoft.com/en-us/library/ms178431.aspx – 2010-02-28 06:34:26
但是,該站點地圖無法從數據庫中提取數據。我的設置在數據庫方面很好,只是試圖確定頁面的網站地圖。感謝您的回答,我會在稍後的一天稍後嘗試。 – 2010-02-28 19:36:04