2008-08-01 27 views
29

Czy ktoś ma doświadczenie w tworzeniu SQL na bazie ASP.NET dostawców mapa-serwisu?ASP.NET Site Mapy

mam domyślny plik XML web.sitemap działa poprawnie z moim menu i SiteMapPath kontroli, ale będę potrzebował drogę dla użytkowników mojej strony do tworzenia i modyfikowania stron dynamicznie.

muszę związać uprawnienia strona oglądalności w standardowym systemie ASP.NET członkostwa, jak również.

+1

Proszę wybrać najlepszą odpowiedź, dziękuję. – mruanova

Odpowiedz

10

Wersja Jeff Prosise z magazynu MSDN działa całkiem dobrze, ale ma kilka wad:

AddNode wpada w panikę z linkami do stron zewnętrznych, w menu (www.google.com, etc.)

Oto moja poprawka w 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 buforowanie jest fajne, ale jeśli nie chcesz, aby podróż do spędzaj DB ładuje się menu (aby sprawdzić, czy zależność uległa zmianie) i swój menu don często się zmieniają, dlaczego zamiast tego używać HttpRuntime.Cache?

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