mvcsitemapprovider根据url参数在breadcrumbs中显示hide节点

时间:2014-03-12 03:15:49

标签: asp.net-mvc-sitemap

我在breadcrumbs中使用mvcsitemapprovider。在网站的某些部分,我想仅在参数满足特定条件时才显示子节点。所有节点都已在Mvc.sitemap中定义。我只是想隐藏它们,直到URL参数满足要求。

我想知道DynamicNodeProvider是否是我唯一的选择。我不能在运行时显示/隐藏几个节点吗?

请帮忙。

1 个答案:

答案 0 :(得分:0)

有两个选项:

  1. 启用security trimming并使用[Authorize]属性修饰控制器操作。这仅在您的“特定条件”与用户角色一致时才有效。
  2. 使用custom visibility provider作为自定义逻辑。您可以使用custom attributes,从UI层通过sourceMetaData字典传递的数据,HttpContext.Current对象或您获得所需的可见性行为所需的任何其他数据源。
  3. 对于第二个选项,我建议将MvcSiteMapProvider_VisibilityAffectsDescendants设置为false,这样您的节点就可以切换可见性而不受其祖先节点的影响。

    IDynamicNodeProvider不是获取此类行为的选项。动态节点是从动态数据源潜在加载的节点,但它们仍然在应用程序启动时加载到共享缓存中。它们不是按请求加载的。但是,您可以将以上两个选项与IDynamicNodeProvider一起使用。