首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP中使用自定义SiteMapProvider?

如何在ASP中使用自定义SiteMapProvider?
EN

Stack Overflow用户
提问于 2012-04-18 16:56:21
回答 2查看 2.5K关注 0票数 0

我目前正在尝试实现一个自定义的SiteMap提供程序。我已经阅读了几个关于它的教程,并跟随他们的脚步。

我已经创建了一个名为MySiteMapProvider的XmlSiteMapProvider子类,它位于MyProject.Security中。

我已经将以下代码添加到我的Web.config的system.web部分:

代码语言:javascript
复制
 <siteMap defaultProvider="MySiteMapProvider" enabled="true">
        <providers>
            <add name="MySiteMapProvider"
              description="Custom SiteMap provider."
              type="MyProject.Security.MySiteMapProvider "
              siteMapFile="Web.sitemap"
              securityTrimmingEnabled="true" />
        </providers>
    </siteMap>

但我确信我的提供程序没有正确使用。我甚至不能从实现开始。为了验证我是否包含了以下(伪)实现:

代码语言:javascript
复制
 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。

我忘了什么重要的事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-20 03:11:35

我没有实现我自己的提供程序,而是使用了MvcSiteMapProvider。使用动态站点地图和自定义SiteMapNodeVisibilityProvider,我需要实现的行为的定制在一天内就实现了。

我也考虑过实现整个SiteMapProvider,可能是基于SQL,我很高兴我不必这么做。

票数 2
EN

Stack Overflow用户

发布于 2012-04-18 17:28:22

尝试从代码中调用System.Web.SiteMap.RootNode

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10206047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档