Frage

Hat jemand Erfahrung mit dem Erstellen? SQL-basiertes ASP.NET Sitemap-Anbieter?

Ich habe die Standard-XML-Datei web.sitemap funktioniert einwandfrei mit meinem Menü und SiteMapPath Steuerelemente, aber ich benötige eine Möglichkeit für die Benutzer meiner Website, Seiten dynamisch zu erstellen und zu ändern.

Ich muss Berechtigungen zum Anzeigen von Seiten in den Standard einbinden ASP.NET auch das Mitgliedschaftssystem.

Keine korrekte Lösung

Andere Tipps

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

AddNode flippt aus, wenn Links zu externen Seiten in Ihrem Menü vorhanden sind (www.google.com usw.)

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

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;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top