Я хочу связать несколько карт сайта с mvcsitemapprovider во время события session_start, поскольку имена и местоположения карт сайта извлекаются в зависимости от типа клиента/пользователя. Но, согласно документам, относящимся к mvcsitemapprovider, все файлы *.sitemap связываются с mvcsitemapprovider во время запуска приложения. Могу ли я каким-либо образом предоставить эту функциональность с помощью этого элемента управления?
Как добавить несколько файлов *.sitemap в mvcsitemapprovider во время запуска сеанса
Ответы (1)
Встроенных функций для каждого сеанса нет, но вы можете реализовать свои собственные ICacheProvider для обработки этого требования. См. также MvcSiteMapProvider 4.0 — Расширение кэша и несколько карт SiteMaps в одном приложении, чтобы узнать больше руководство.
Обратите внимание, что основная причина, по которой это не существует из коробки, заключается в том, что это будет чрезвычайно интенсивно использовать память и не будет масштабироваться для очень многих пользователей. Если ваша навигация совершенно не отличается для каждого пользователя, я бы не рекомендовал использовать этот подход. Лучшей альтернативой является использование подход preservedRouteParameters, чтобы заставить некоторые значения маршрута соответствовать любому значению (в вашем случае userid или clientid), а затем использовать ISiteMapNodeVisibilityProvider, SiteMapTitleAttribute и/или ручное обновление свойств SiteMapNode по запросу для контроля видимости узла.
Пожалуйста, посмотрите мой открытый вопрос здесь и объясните мне, почему вы хотите сделать это на GitHub, поскольку это делает большинство функций бесполезными: https://github.com/maartenba/MvcSiteMapProvider/issues/16#issuecomment-22229604