Cartes du site ASP.NET

Est-ce que quelqu'un a de l'expérience dans la création de fournisseurs de carte de site ASP.NET basés sur SQL?

J'ai le fichier xml par défaut web.sitemap qui fonctionne correctement avec mes contrôles Menu et SiteMapPath , mais je vais avoir besoin d'un moyen pour les utilisateurs de mon site de créer et modifier des pages dynamiquement.

J'ai aussi besoin de relier les permissions d'affichage des pages au système standard d'adhésion ASP.NET .

0
ajouté édité
Vues: 2
Veuillez sélectionner la meilleure réponse, merci.
ajouté l'auteur mruanova, source

1 Réponses

La version Jeff Prosise du magazine MSDN fonctionne plutôt bien, mais elle a quelques défauts:

AddNode freaks out with links to external sites on your 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);
}

SQLDependency caching is cool, but if you don't want to make a trip to the DB everytime your menu loads (to check to see if the dependency has changed) and your menus don't change very often, then why not use HttpRuntime.Cache instead?

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;
    }
}
0
ajouté