2010-11-15 6 views
0

J'ai écrit mon propre staticitemapprovider qui crée une carte de site dynamique. Le problème que j'ai est que parfois les pages auront des paramètres supplémentaires dans la chaîne de requête que j'ai besoin d'ignorer.Ignorer des paramètres de chaîne de requête spécifiques dans sitemapprovider personnalisé

Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode 

    Dim startpos As Integer = 0 
    Dim endpos As Integer = 0 

    If rawUrl.Contains("pagetype=") Then 
     startpos = rawUrl.IndexOf("pagetype=") 
     endpos = rawUrl.IndexOf("&", startpos) + 1 
     If endpos >= startpos Then 
      'not the last param 
      rawUrl = rawUrl.Remove(startpos, endpos - startpos) 
     Else 
      'must be the last param 
      rawUrl = rawUrl.Remove(startpos) 
     End If 
    End If 

    Return MyBase.FindSiteMapNode(rawUrl) 

End Function 

J'ai aussi la fonction même remplacée FindSiteMapNode qui prend dans un objet HttpContect. Avec cela, je trouve simplement l'URL de cette requête et l'exécute avec la même fonction ci-dessus. Cependant, avec ceci, mon sitemappath (lié au plan du site) ne renvoie rien sur chaque page.

Répondre

0

En fin de compte cela s'est avéré être une solution très simple. Tout ce que je devais faire était de vérifier si le paramètre était le premier dans l'URL. Si ce n'était pas, je devais aussi enlever l'esperluette - donc ce serait startpos - 1

Cheers