Игнорирование определенных параметров строки запроса в пользовательском sitemapprovider - PullRequest
0 голосов
/ 15 ноября 2010

Я написал свой собственный 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

Я также переопределил функцию FindSiteMapNode, которая принимает объект HttpContect. После этого я просто нахожу URL-адрес этого запроса и запускаю его, используя ту же функцию, что и выше.

Однако при этом мой sitemappath (который привязан к карте сайта) ничего не возвращает на каждой странице.

1 Ответ

0 голосов
/ 15 ноября 2010

В итоге это оказалось очень простым исправлением.Все, что мне нужно было сделать, это проверить, был ли параметр первым в URL.Если это не так, мне также нужно было удалить амперсанд - так что это будет startpos - 1

Приветствия

...