0

我目前正在尝试实现一个自定义SiteMap提供程序。我已经阅读了几篇关于它的教程,并且遵循了他们的主导。如何在ASP NET MVC中使用自定义SiteMapProvider?

我已经创建了一个名为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世界的。

我忘了重要的事吗?

回答

2

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

我也考虑过实施整个SiteMapProvider,可能在SQL的基础上,我很高兴我不必这样做。

0

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

+0

好吧,执行我的代码。但它只对根节点进行检查。只有在调用这段特定的代码时才会执行它。那么我将如何进一步? – ckonig 2012-04-18 11:23:38

相关问题