Domanda

Qualcuno ha esperienza nella creazione ASP.NET basato su SQL fornitori di mappe del sito?

Ho il file XML predefinito web.sitemap funziona correttamente con il mio menu e PercorsoMappaSito controlli, ma avrò bisogno di un modo per consentire agli utenti del mio sito di creare e modificare le pagine in modo dinamico.

Devo legare le autorizzazioni di visualizzazione della pagina allo standard ASP.NET anche il sistema di appartenenza.

Nessuna soluzione corretta

Altri suggerimenti

La versione di Jeff Prosise della rivista MSDN funziona piuttosto bene, ma presenta alcuni difetti:

AddNode impazzisce con i link a siti esterni nel menu (www.google.com, ecc.)

Ecco la mia soluzione BuildSiteMap():

SiteMapNode node = GetSiteMapNodeFromReader(reader);
string url = node.Url;
if (url.Contains(":"))
{
    string garbage = Guid.NewGuid().ToString();  // SiteMapNode needs unique URLs
    node.Url = "~/dummy_" + garbage + ".aspx";
    AddNode(node, _root);
    node.Url = url;
}
else
{
    AddNode(node, _root);
}

SQLDependency la memorizzazione nella cache è interessante, ma se non vuoi fare un viaggio nel DB ogni volta che il tuo menu viene caricato (per verificare se la dipendenza è cambiata) e i tuoi menu non cambiano molto spesso, allora perché non usarlo HttpRuntime.Cache Invece?

public override SiteMapNode RootNode
{
    get
    {
        SiteMapNode temp = (SiteMapNode)HttpRuntime.Cache["SomeKeyName"];
        if (temp == null)
        {
            temp = BuildSiteMap();
            HttpRuntime.Cache.Insert("SomeKeyName", temp, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
        }
        return temp;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top