我目前正在尝试实现一个自定义的SiteMap提供程序。我已经阅读了几个关于它的教程,并跟随他们的脚步。
我已经创建了一个名为MySiteMapProvider的XmlSiteMapProvider子类,它位于MyProject.Security中。
我已经将以下代码添加到我的Web.config的system.web部分:
<siteMap defaultProvider="MySiteMapProvider" enabled="true">
<providers>
<add name="MySiteMapProvider"
description="Custom SiteMap provider."
type="MyProject.Security.MySiteMapProvider "
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>但我确信我的提供程序没有正确使用。我甚至不能从实现开始。为了验证我是否包含了以下(伪)实现:
public override bool IsAccessibleToUser(System.Web.HttpContext context, System.Web.SiteMapNode node)
{
Debug.Print("Hello World");
throw new Exception();
return base.IsAccessibleToUser(context, node);
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection attributes)
{
Debug.Print("Hello World");
throw new Exception();
base.Initialize(name, attributes);
}
public override SiteMapNode BuildSiteMap()
{
Debug.Print("Hello World");
throw new Exception();
return base.BuildSiteMap();
}但是我可以随心所欲地使用这个站点和导航,没有出现异常,调试控制台根本不显示Hello World。
我忘了什么重要的事吗?
发布于 2012-04-20 03:11:35
我没有实现我自己的提供程序,而是使用了MvcSiteMapProvider。使用动态站点地图和自定义SiteMapNodeVisibilityProvider,我需要实现的行为的定制在一天内就实现了。
我也考虑过实现整个SiteMapProvider,可能是基于SQL,我很高兴我不必这么做。
发布于 2012-04-18 17:28:22
尝试从代码中调用System.Web.SiteMap.RootNode。
https://stackoverflow.com/questions/10206047
复制相似问题