2008-08-01 16 views
29

¿Alguien tiene experiencia creando basado en SQL ASP.NET proveedores de mapa del sitio?ASP.NET Site Maps

tengo el archivo XML predeterminado web.sitemap funciona correctamente con mi menú y SiteMapPath controles, pero necesito una manera para que los usuarios de mi sitio web para crear y modificar las páginas de forma dinámica.

Tengo que unir los permisos de visualización de páginas en el sistema de membresía estándar ASP.NET también.

+1

Por favor, seleccione la mejor respuesta, gracias. – mruanova

Respuesta

10

La versión Jeff Prosise de la revista MSDN funciona bastante bien, pero tiene algunos defectos:

AddNode se asusta con enlaces a sitios externos en su menú (www.google.com, etc.)

aquí está mi solución en 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 almacenamiento en caché es bueno, pero si usted no quiere hacer un viaje a la cada vez DB sus cargas de menú (para comprobar para ver si la dependencia ha cambiado) y su menús don No cambia muy a menudo, entonces ¿por qué no usar 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; 
    } 
} 
Cuestiones relacionadas