Je travaille sur un CMS en utilisant VB.NET 3.5 et je suis bloqué sur un concept. J'ai différents modules qui font des choses différentes comme wysiwyg, formulaire de contact, galerie d'images, etc ... mais celui qui devient un peu un défi est de contourner "comment" construire un sitemap. Pour l'anecdote, je ne parle PAS d'un sitemap SEO (XML), mais plutôt d'un plan du site similaire à Karamasoft (regardez le style BMW ou Dell pour avoir une idée de ce que je tire).Concept de codage nécessaire pour construire un sitemap de page
Ma base de données contient les colonnes suivantes
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
J'ai ma configuration de code de telle sorte que je remplir tous les champs pertinents dans un objet sur le côté serveur que je peux alors accéder plusieurs fois sans frapper la DB encore et encore.
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
Ce que je suis en train de faire est d'avoir tous les documents qui n'ont pas ParentID (IE: ils sont des éléments de haut niveau) figurer en haut, et l'ensemble de ses enfants énumérés ci-dessous.
<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>
Je veux être en mesure de définir dynamiquement le nombre de colonnes de la table, de sorte que si j'ai 10 articles de parents et ne tournerai ma largeur à 5 colonnes, les éléments parents restants seraient répertoriés dans une autre ligne de tableau ci-dessous .
Je suis sûr que je peux créer le code moi-même une fois que je me suis mis à penser à cela, je cherche juste un "concept" sur la façon d'aborder ce problème.
Aussi, je ne cherche pas un Treeview puisque c'est fondamentalement ce que je fais maintenant et je ne l'aime vraiment pas du tout.
Merci pour la réponse détaillée. Pouvez-vous élaborer sur le sitemap asp.net? Je ne cherche pas le "web.sitemap", donc je ne suis pas entièrement sûr de ce dont vous parlez. –
Je voulais juste dire que d'après ce que je peux dire, la fonctionnalité que vous implémentez est déjà là avec le sitemap ASP.NET. Si vous avez besoin de quelque chose de plus dynamique (c.-à-d.lire la structure de menu hors d'une base de données), au moins envisager d'extraire cela dans le format sitemap, de sorte qu'il peut être branché dans le cadre ASP.NET. Implémenter un fournisseur de sitemap personnalisé est assez facile. :) http://msdn.microsoft.com/en-us/library/ms178431.aspx –
Mais le sitemap n'a pas la capacité d'extraire des données de la base de données. Ma configuration est bonne du point de vue de la base de données, essayant juste d'établir le sitemap de la page. Merci pour votre réponse ci-dessus, je vais l'essayer un peu plus tard dans la journée. –