【问题标题】:ASP.NET Site MapsASP.NET 站点地图
【发布时间】:2010-09-05 05:37:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql asp.net xml sitemap


    【解决方案1】:

    来自 MSDN 杂志的 Jeff Prosise 版本运行良好,但存在一些缺陷:

    AddNode 在您的菜单(www.google.com 等)上看到指向外部网站的链接会发疯

    这是我在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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2010-12-25
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多