2014-05-12 24 views
0

我想在session_start事件期間將多個站點地圖關聯到mvcsitemapprovider,因爲站點地圖名稱和位置是根據客戶端/用戶的類型檢索的。但是,根據與mvcsitemapprovider相關的文檔,在應用程序啓動期間,所有* .sitemaps都將與mvcsitemapprovider關聯。有什麼辦法,我可以使用這個控件提供這個功能嗎?如何在會話開始時向mvcsitemapprovider添加多個* .sitemap文件

回答

0

沒有內置的每個會話功能,但是您可以使用implement your own ICacheProvider來處理此要求。有關更多指導,另請參閱MvcSiteMapProvider 4.0 - Extending the CacheMultiple SiteMaps in One Application

請注意,這不是開箱即用的主要原因是因爲它會佔用大量內存,並且不會擴展到很多用戶。除非你的導航是完全不同的每個用戶,我不會推薦使用這種方法。一個更好的選擇是使用preservedRouteParameters approach強制某些路由值與任何值匹配(在您的情況下,用戶標識符或clientid),然後使用ISiteMapNodeVisibilityProvider,SiteMapTitleAttribute和/或手動更新每個請求的SiteMapNode屬性來控制節點的可見性。

請在這裏看到我的懸而未決的問題,並給我解釋一下你爲什麼會想這樣做GitHub上,因爲它呈現最無用功能:https://github.com/maartenba/MvcSiteMapProvider/issues/16#issuecomment-22229604