Как добавить несколько файлов *.sitemap в mvcsitemapprovider во время запуска сеанса

Я хочу связать несколько карт сайта с mvcsitemapprovider во время события session_start, поскольку имена и местоположения карт сайта извлекаются в зависимости от типа клиента/пользователя. Но, согласно документам, относящимся к mvcsitemapprovider, все файлы *.sitemap связываются с mvcsitemapprovider во время запуска приложения. Могу ли я каким-либо образом предоставить эту функциональность с помощью этого элемента управления?


person Mike143    schedule 12.05.2014    source источник


Ответы (1)


Встроенных функций для каждого сеанса нет, но вы можете реализовать свои собственные ICacheProvider для обработки этого требования. См. также MvcSiteMapProvider 4.0 — Расширение кэша и несколько карт SiteMaps в одном приложении, чтобы узнать больше руководство.

Обратите внимание, что основная причина, по которой это не существует из коробки, заключается в том, что это будет чрезвычайно интенсивно использовать память и не будет масштабироваться для очень многих пользователей. Если ваша навигация совершенно не отличается для каждого пользователя, я бы не рекомендовал использовать этот подход. Лучшей альтернативой является использование подход preservedRouteParameters, чтобы заставить некоторые значения маршрута соответствовать любому значению (в вашем случае userid или clientid), а затем использовать ISiteMapNodeVisibilityProvider, SiteMapTitleAttribute и/или ручное обновление свойств SiteMapNode по запросу для контроля видимости узла.

Пожалуйста, посмотрите мой открытый вопрос здесь и объясните мне, почему вы хотите сделать это на GitHub, поскольку это делает большинство функций бесполезными: https://github.com/maartenba/MvcSiteMapProvider/issues/16#issuecomment-22229604

person NightOwl888    schedule 13.05.2014