2012-04-21 4 views
0

Я реализовал поставщик динамических узлов, указав имя поставщика узла в файле mvcSiteMapNode в файле SiteMap, и он отлично работает. Тем не менее, я хочу только добавить динамические узлы после аутентификации пользователя. Причина в том, что я хочу получить доступ к HttpContext.User.Identity, чтобы я мог фильтровать узлы по user.Identity.Как добавить узел к поставщику динамического узла?

Итак, я удалил mvcSiteMapNode в файле SiteMap, и вместо этого я вызываю метод GetDynamicNodeCollection в методе Action (после аутентификации пользователя), и узлы фильтруются пользователем. Это также работает так, как ожидалось.

Мой вопрос: как только я получил узлы, как добавить их в SiteMapNodeCollection, чтобы они отображались в представлении, которое возвращается из ActionResult?

ответ

1

Возможно, это будет работа для поставщика SiteMapNodeVisibility, а не для DynamicNodeProvider.

Причина - кэширование узлов.

+0

Помимо того, что используется правильный поставщик, основная проблема заключается в том, что провайдеры запускаются при первом обращении к карте сайта. Это означает, что нет способа контролировать, когда узлы создаются и визуализируются. Документация практически не существует, как и ответы на форуме GITHUB. Я собираюсь удалить MvcSiteMapProvider, потому что его приложение очень ограничено. – Greg

Смежные вопросы