忽略自定义sitemapprovider中的特定查询字符串参数

时间:2010-11-15 11:14:38

标签: asp.net sitemap sitemapprovider

我编写了自己的staticsitemapprovider,用于构建动态站点地图。我遇到的问题是,有时页面会在查询字符串中有其他参数,我需要忽略它们。

    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(绑定到站点地图)在每个页面上都不返回任何内容。

1 个答案:

答案 0 :(得分:0)

最后,这是一个非常简单的修复。我需要做的就是检查参数是否是网址中的第一个参数。如果不是,我也需要删除&符号 - 所以它将是startpos - 1

干杯