MSDN dergisinden Jeff Prosise sürümü oldukça iyi çalışıyor, ama bu birkaç kusuru vardır: menünüzde harici sitelere bağlantılar ile
AddNode
ucubeleri (www.google.com, vb)
İşte BuildSiteMap()
benim Çözüm şudur:
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
önbelleğe serin olmakla birlikte, DB her şey bir gezi yapmak istemiyorsanız menü yükler (bağımlılık değişip değişmediğini anlamak için kontrol etmeyi) ve sizin menüler don Çok sık değiştirmeyin, o zaman neden yerine HttpRuntime.Cache
kullanmayın?
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;
}
}
Lütfen en iyi cevabı seçin, teşekkürler. – mruanova