mvcsitemapprovider根据url参数在面包屑中显示隐藏节点



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

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

请帮。

有两个选项:

  1. 启用安全修剪并使用[Authorize]属性装饰控制器动作。只有当你的"特定条件"与用户角色一致时,这才会起作用。
  2. 为您的自定义逻辑使用自定义可见性提供程序。你可以使用自定义属性,从UI层通过sourceMetaData字典传递的数据,HttpContext。当前对象,或任何其他数据源,您需要获得所需的可见性行为。

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

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

最新更新