ASP.NET网站地图
时间:2020-03-05 18:37:16 来源:igfitidea点击:
有没有人有创建基于SQL的ASP.NET站点地图提供程序的经验?
我的默认XML文件" web.sitemap"可以与Menu和SiteMapPath控件一起正常使用,但我需要一种让网站用户动态创建和修改页面的方法。
我还需要将页面查看权限绑定到标准的ASP.NET成员资格系统中。
解决方案:
来自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; } }