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