ASP.NET Site Maps

voix
31

Quelqu'un at - il expérience dans la création ASP.NET basées sur SQL fournisseurs-plan du site?

Je le fichier XML par défaut web.sitemapfonctionne correctement avec mon menu et SiteMapPath contrôles, mais je vais avoir besoin d' un moyen pour les utilisateurs de mon site pour créer et modifier dynamiquement les pages.

Je dois lier autorisations d'affichage de la page dans la norme ASP.NETsystème d'adhésion ainsi.

Créé 01/08/2008 à 16:50
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
11

La version Jeff Prosise du magazine MSDN fonctionne assez bien, mais il a quelques défauts:

AddNode freaks avec des liens vers des sites externes sur votre menu (www.google.com, etc.)

Voici ma solution dans 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);
}

SQLDependencyla mise en cache est cool, mais si vous ne voulez pas faire un voyage à la DB à chaque fois que vos charges de menu (pour vérifier si la dépendance a changé) et vos menus ne changent pas très souvent, alors pourquoi ne pas utiliser à la HttpRuntime.Cacheplace?

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;
    }
}
Créé 23/09/2008 à 23:41
source utilisateur

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