Игнорирование определенных параметров строки запроса в пользовательском 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

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

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

1 ответ

Решение

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

ура

Другие вопросы по тегам