J'ai bien regardé un chargement de documentation de MS seulement pour trouver une structure arborescente à l'utilisation de sitemaps. Je suppose que personne ne sait comment il est possible d'avoir une structure de type dossier pour la navigation dans le sitemap? Prenons par exemple une structure comme suitComportement de SiteMap
Home
About
Me.aspx
MyFamily.aspx
MyPets.aspx
Contact
Telephone.aspx
Email.aspx
Disclaimer.aspx
Le « A propos » et « Contact » serait dossiers, mais le plan du site est jamais hiérarchique sur une seule page. Ainsi, j'aurais ma page racine avec deux éléments de menu, l'un serait "Accueil" qui agit comme un dossier pour explorer les menus à propos et contact, et l'autre est un lien vers la page pour l'avertissement. Je veux être en mesure de cliquer sur Accueil qui va recharger le menu avec les liens pour "À propos" et "Contact" et masquer "Accueil" et "Disclaimer" tout à fait.
Home >
Disclaimer
Cliquez ensuite sur la maison et vous obtiendrez
About >
Contact >
Ensuite, en cliquant sur sur vous obtiendriez
Me
My Family
My Pets
Chaque menus aurait un menu "up" pour revenir sur un dossier.
Je ne vois pas de solution facile, mais pour le moment nous utilisons des pages html statiques qui se trouvent dans différents dossiers partout dans notre application web. C'est quelque chose qui doit changer comme vous pouvez l'imaginer.
Des idées?
EDIT
J'ai dû trouver une solution VB.NET
<script runat="server">
Private Function GetSecondaryNavItems() As String
Dim sRet As String = ""
Dim oCurrNode As System.Web.SiteMapNode = Nothing
Dim oCurrParentNode As System.Web.SiteMapNode = Nothing
'Dim sCurrPage As String = GetURL(Request.ServerVariables("SCRIPT_NAME").ToLower())
Dim sCurrPage As String = GetURL(HttpContext.Current.Request.ServerVariables("SCRIPT_NAME").ToLower())
oCurrNode = GetCurrentNode(sCurrPage, SiteMap.RootNode)
If Not oCurrNode Is Nothing Then
oCurrParentNode = oCurrNode.ParentNode
End If
If Not oCurrParentNode Is Nothing Then
If Not oCurrParentNode Is SiteMap.RootNode Then
sRet += "Parent Folder Link"
If Not oCurrNode Is Nothing Then
For Each oChild As SiteMapNode In oCurrParentNode.ChildNodes
sRet += "Link for child"
Next
End If
End If
End If
Return sRet
End Function
Private Function GetURL(ByVal fullURL As String) As String
Return fullURL.Substring(fullURL.LastIndexOf("/"))
End Function
Private Function GetCurrentNode(ByVal _sCurrentPageURL As String, ByVal _oNode As SiteMapNode) As SiteMapNode
Dim oNodeRet As SiteMapNode = Nothing
For Each oNodeCheck As SiteMapNode In _oNode.ChildNodes
If oNodeCheck.HasChildNodes = True Then
oNodeRet = GetCurrentNode(_sCurrentPageURL, oNodeCheck)
End If
If oNodeRet Is Nothing Then
Exit For
End If
Dim sURL As String = oNodeCheck.Url.ToLower()
Dim iPos As Integer = sURL.IndexOf("?")
If iPos > 0 Then
sURL = sURL.Substring(0, iPos)
End If
iPos = sURL.LastIndexOf("/")
If iPos > 0 Then
sURL = sURL.Substring(iPos)
End If
If sURL = _sCurrentPageURL Then
oNodeRet = oNodeCheck
Exit For
End If
Next
Return oNodeRet
End Function
</script>
Ceci est dans le fichier de page maître directement (temporaire, je vais le placer dans le code derrière le modèle plus tard).
J'ai ensuite eu ce dans le corps
<div id="sidebar">
<%= GetSecondaryNavItems() %>
</div>
Encore une fois, à titre temporaire juste pour tester. Il ne produit pas réellement quoi que ce soit mais je pense que ma définition GetURL est incorrecte. Je supposais que c'était juste en train d'obtenir le fichier? Je pourrais avoir tort cependant :)
EDIT EDIT: Pour une raison quelconque, je ne reçois aucune sortie, donc je pensais que c'était mon sitemap. Je vais avoir besoin de déboguer, mais je suis remoting en ce moment il est assez lent;)
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="Accounts/Default.aspx" title="Accounts" description="Accounts">
<siteMapNode url="Accounts/Test.aspx" title="Client Balances" description="Client Balances">
<siteMapNode url="Hello.aspx" title="Hello" description="rarar" />
<siteMapNode url="Hiya.aspx" title="Hiya" description="rarar" />
</siteMapNode>
<siteMapNode url="Test.aspx" title="Test" description="rarar" />
</siteMapNode>
</siteMap>
est ici l'exemple plan du site.
Si vous vérifiez juste mon édition quand vous avez l'heure ce serait génial. Bravo – Kezzer
Je viens d'ajouter le GetURL en C# pour vous, mais ce que vous auriez probablement dû faire, puisque je parie que vous n'utilisez pas de Querystrings sur ces pages. Je vais prendre un autre regard. –
Je n'arrive pas à trouver le problème, mais rien ne sort du tout, bien que cela soit probablement lié à mon sitemap (je l'ai mis dans le montage de mon post). Je vais devoir vérifier demain quand je serai de nouveau au travail malheureusement. Bravo pour l'extrait, cela prend tout son sens. – Kezzer