ASP.NET网站地图

有没有人有创建基于SQL的ASP.NET 站点地图提供者的经验?

我的默认XML文件 web.sitemap 可以正常使用我的Menu和 SiteMapPath 控件,但是我需要一种让我的网站用户创建和修改页面的方式动态。

我需要将页面查看权限绑定到标准的 ASP.NET 会员系统中。

0
额外 编辑
意见: 1
请选择最佳答案,谢谢。
额外 作者 mruanova,

1 答案

MSDN杂志的Jeff Prosise版本工作得很好,但它有一些缺陷:

AddNode freaks out with links to external sites on your menu (www.google.com, etc.)

这是我在 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
额外