ASP.NET Site Maps

stemmer
33

Har noen erfaring med å lage SQL-baserte ASP.NET site-kart leverandører?

Jeg har standard XML-filen web.sitemapfungerer som den skal med min Meny og SiteMapPath kontroller, men jeg trenger en måte for brukerne av nettstedet mitt for å opprette og tilpasse sider dynamisk.

Jeg trenger å knytte side visning tillatelser til standard ASP.NETmedlemskap systemet også.

Publisert på 01/08/2008 klokken 15:50
kilden bruker
På andre språk...                            


1 svar

stemmer
12

Jeff Prosise versjonen fra MSDN magasinet fungerer ganske bra, men det har noen feil:

AddNode freaks ut med lenker til eksterne nettsteder på menyen (www.google.com, etc.)

Her er min løsning på 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);
}

SQLDependencycaching er kult, men hvis du ikke ønsker å ta en tur til DB hver meny laster (for å sjekke for å se om avhengighet har endret seg) og menyene ikke endres ofte, så hvorfor ikke bruke HttpRuntime.Cachei stedet?

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;
    }
}
Svarte 23/09/2008 kl. 22:41
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more