Jak jsem se nazlobil s XMLSiteMapProviderem

Tomáš Jecha, MVP, MCSD       25.04.2007             10939 zobrazení

Pokud patříte mezi lidi zasvědcené do technologie ASP.NET, tak jste se již pravděpodobně setkali s třídou XMLSiteMapProvider. Díky ní můžete definovat pevnou strukturu stránky přes XML soubor a popřípadě přidat další SiteMapProvidery jako další větve.

Vše funguje krásně do té doby, než se pokusíte změnit větev nějakého jiného providera, který je navázaný do XmlSiteMapProvidera. Výstup se totiž nemění a zůstává stejný jako při prvním spuštění.

Proč to tak je?

Dlouho jsem si s tím lámal hlavu (ostatně s tím byl velký problém na tomto serveru VbNet.cz), až se mi do rukou dostaly kódy této třídy. Zjistil jsem, že funkce pro určení, zda se něco změnilo v podřízené větvi jiného providera porovnává se starým výsledkem pouze funkcí Equal - ta porovná pouze klíče větví (většinou konstatní), ale na titulek nebo url se ani nepodívá, takže se místo nových dat používají často ty staré.

Tento nedostatek se dá velice snadno vyřešit přidáním nové funkce, která znovu sestaví sitemapu:

    Public Class XmlSiteMapProviderExt
        Inherits XmlSiteMapProvider
        Public Sub RefreshSiteMap()
            Clear()
            BuildSiteMap()
        End Sub
    End Class 

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback