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