ASP.NET Site Maps

votos
31

Alguém tem experiência na criação de ASP.NET baseados em SQL provedores de mapa de site?

Eu tenho o arquivo XML padrão web.sitemapfuncionando corretamente com o meu Menu e SiteMapPath controles, mas vou precisar de uma maneira para os usuários do meu site para criar e modificar páginas dinamicamente.

Eu preciso amarrar permissões de visualização página para o padrão ASP.NETsistema de afiliação também.

Publicado 01/08/2008 em 16:50
fonte usuário
Em outras línguas...                            


1 respostas

votos
11

A versão Jeff Prosise da revista MSDN funciona muito bem, mas tem algumas falhas:

AddNode enlouquece com links para sites externos em seu menu (www.google.com, etc.)

Aqui está a minha correção em 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);
}

SQLDependencycaching é legal, mas se você não quiser fazer uma viagem para a toda DB suas cargas de menu (para verificar se a dependência mudou) e seus menus não mudam muito frequentemente, então por que não usar HttpRuntime.Cacheem vez disso?

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;
    }
}
Respondeu 23/09/2008 em 23:41
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more