mvcsitemapprovider show hide node в хлебных крошках на основе параметров URL

Я использую mvcsitemapprovider в сухарях. В определенном разделе сайта я хочу показывать дочерние узлы, только если параметры соответствуют определенным условиям. Все узлы уже определены в Mvc.sitemap. Я просто хочу скрыть их, пока параметры URL не будут соответствовать требованию.

Я хочу знать, является ли DynamicNodeProvider единственным вариантом, который у меня есть. Разве я не могу показать / скрыть несколько узлов во время выполнения?

Пожалуйста помоги.

1 ответ

Есть 2 варианта:

  1. Включите усечение безопасности и украсьте действия вашего контроллера атрибутом [Authorize]. Это будет работать, только если ваши "определенные условия" совпадают с ролями пользователей.
  2. Используйте пользовательский поставщик видимости для вашей пользовательской логики. Вы можете использовать пользовательские атрибуты, данные, передаваемые со слоя пользовательского интерфейса через словарь sourceMetaData, объект HttpContext.Current или любой другой источник данных, необходимый для получения требуемого поведения видимости.

Для второго варианта я бы порекомендовал установить для параметра MvcSiteMapProvider_VisibilityAffectsDescendants значение false, чтобы ваши узлы переключали видимость, не затрагивая их узлы-предки.

IDynamicNodeProvider не является опцией для получения такого поведения. Динамические узлы - это узлы, которые потенциально загружаются из динамического источника данных, но они по-прежнему загружаются в общий кэш при запуске приложения. Они не загружаются по запросу. Однако вы можете использовать оба вышеуказанных параметра с IDynamicNodeProvider.

Другие вопросы по тегам