0

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

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

请帮忙。

4

1 回答 1

0

有2个选项:

  1. 启用安全修剪并使用 [Authorize] 属性装饰您的控制器操作。这仅在您的“某些条件”与用户角色一致时才有效。
  2. 为您的自定义逻辑使用自定义可见性提供程序。您可以使用自定义属性、通过 sourceMetaData 字典从 UI 层传递的数据、HttpContext.Current 对象或您需要的任何其他数据源来获得所需的可见性行为。

对于第二个选项,我建议将MvcSiteMapProvider_VisibilityAffectsDescendants设置设置为 false,这样您的节点将切换可见性而不受其祖先节点的影响。

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

于 2014-03-13T12:12:11.297 回答