繁体   English   中英

ASP.NET 站点地图

[英]ASP.NET Site Maps

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

我的默认 XML 文件web.sitemap与我的 Menu 和 SiteMapPath 控件一起正常工作,但是我需要一种方法让我的站点的用户动态创建和修改页面。

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

MSDN 杂志中的 Jeff Prosise 版本运行良好,但它有一些缺陷:

AddNode对您菜单上的外部站点(www.google.com 等)的链接AddNode震惊

这是我在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缓存很酷,但是如果您不想在每次加载菜单时都访问数据库(以检查依赖项是否已更改)并且您的菜单不经常更改,那么为什么不使用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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM