sql - ASP.NET-Site-Maps

Translate

Hat jemand Erfahrung im ErstellenSQL-basiertes ASP.NETSite-Map-Anbieter?

Ich habe die Standard-XML-Dateiweb.sitemaprichtig mit meinem Menü arbeiten undSiteMapPathSteuerelemente, aber ich brauche eine Möglichkeit für die Benutzer meiner Website, Seiten dynamisch zu erstellen und zu ändern.

Ich muss die Berechtigungen zum Anzeigen von Seiten in den Standard einbindenASP.NETMitgliedssystem auch.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Die Jeff Prosise-Version aus dem MSDN-Magazin funktioniert ziemlich gut, weist jedoch einige Mängel auf:

AddNodeFreaks mit Links zu externen Websites in Ihrem Menü (www.google.com usw.)

Hier ist mein Fix inBuildSiteMap():

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 ist cool, aber wenn Sie nicht jedes Mal einen Ausflug in die Datenbank machen möchten, wenn Ihr Menü geladen wird (um zu überprüfen, ob sich die Abhängigkeit geändert hat) und Ihre Menüs sich nicht sehr oft ändern, warum nicht verwenden?HttpRuntime.Cachestattdessen?

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;
    }
}
Quelle