2008-08-01 34 views
29

SQL tabanlı ASP.NET site haritası sağlayıcıları oluşturma deneyimi var mı?ASP.NET Site Haritası

benim Menüsü ve SiteMapPath kontrolleri ile düzgün çalışıyor varsayılan XML dosyası web.sitemap var, ama ben oluşturmak ve dinamik sayfaları değiştirmek için sitemde kullanıcıları için bir yola gerek vardır.

Sayfa görüntüleme izinlerini standart ASP.NET üyelik sistemine de bağlamalıyım.

+1

Lütfen en iyi cevabı seçin, teşekkürler. – mruanova

cevap

10

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; 
    } 
} 
İlgili konular