Maps ASP.NET Site

stemmen
31

Heeft iemand ervaring met het maken hebben SQL-gebaseerde ASP.NET site-map providers?

Ik heb de standaard XML-bestand web.sitemapgoed werkt met mijn Menu en SiteMapPath controles, maar ik zal een manier voor de gebruikers van mijn site te maken en pagina's dynamisch te wijzigen nodig.

Ik moet pagina bekijken toestemmingen binden in de standaard ASP.NETlidmaatschap systeem ook.

De vraag is gesteld op 01/08/2008 om 16:50
bron van user
In andere talen...                            


1 antwoorden

stemmen
11

De Jeff Prosise versie van MSDN Magazine werkt vrij goed, maar het heeft een paar gebreken:

AddNode freaks uit met links naar externe sites op uw menu (www.google.com, etc.)

Hier is mijn fix in 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 is cool, maar als je niet wilt dat een reis naar de DB elke keer maak je menu belastingen (om te controleren om te zien of de afhankelijkheid is veranderd) en uw menu's niet veranderen zo vaak, waarom dan niet gebruiken HttpRuntime.Cachein plaats daarvan?

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;
    }
}
antwoordde op 23/09/2008 om 23:41
bron van user

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