2010-11-15 34 views
0

我寫了自己的staticsitemapprovider,它構建了一個動態站點地圖。我遇到的問題是,有時頁面在查詢字符串中會有其他參數,我需要忽略它們。忽略自定義sitemapprovider中的特定查詢字符串參數

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 

我也重寫了接受HttpContect對象的FindSiteMapNode函數。有了這個,我可以簡單地找到該請求的URL,並通過上面的相同函數來運行它。

但是,由於我的sitemappath(綁定到站點地圖)在每個頁面上都沒有返回任何內容。

回答

0

最後,這竟然是一個非常簡單的修復。我所需要做的就是檢查參數是否是網址中的第一個。如果不是,我也需要刪除&符號 - 所以它會是startpos - 1

乾杯