1

。我試圖用忽略MvcSiteMapProvider_AttributesToIgnore appSetting在我web.config文件中像下面使用MvcSitemapprovider MVC 5 Unity忽略RouteValues我使用NuGet的<code>MvcSiteMapProvider</code>包使用Unity DI創建MVC 5應用程序

<add key="MvcSiteMapProvider_AttributesToIgnore" value="type" /> 

但顯示我的網站地圖時,網址都具有忽略值作爲查詢字符串。

還有就是MvcSiteMapProvider文檔讀取

如果使用外部DI容器在一個部分中,該設置可以在名爲「attributesToIgnore」參數ReservedAttributeNameProvider的構造,這是IEnumerable類型中找到

我使用Unity,所以我想知道是否需要以某種方式將它添加到我的容器中,但我不知道如何。

關於如何忽略路由值的任何想法?

回答

2

你只需要設置添加到ReservedAttributeNameProvider如文檔中描述:

// Prepare for the sitemap node providers 
this.Container.RegisterType<IXmlSource, FileXmlSource>("file1XmlSource", new InjectionConstructor(absoluteFileName)); 
this.Container.RegisterType<IReservedAttributeNameProvider, ReservedAttributeNameProvider>(
    // Add the attributes to ignore here 
    new InjectionConstructor(new string[] { "type", "value2" })); 

提示:你總是可以找出相關性的類有暫時newing了類,看着Intellisense的參數。

new ReservedAttributeNameProvider( 

// Type the above in Visual Studio and you will see the constructor parameters 
// in a tooltip 
+1

這樣做。我試圖將這個添加到錯誤的位置。我忘了提及我已經安裝了MvcSiteMapProvider MVC5 Unity模塊,在這種情況下,我應該一直試圖在MvcSiteMapProviderContainerExtension類中進行此更改。謝謝。 – JasonlPrice 2014-12-04 14:24:26

+1

我可能需要啓動一個新線程,但是當我添加屬性以忽略SiteMapNodeModel.IsCurrentNode和SiteMapNodeModel.IsInCurrentPath在屬性忽略集合的節點上應該爲true時爲false。如果要忽略的屬性被忽略,則這些屬性按預期工作。有什麼建議麼? – JasonlPrice 2014-12-04 14:59:44

+1

當在AttributesToIgnore中設置一個鍵時,它將不再是路由匹配的一部分。這是它的目的 - 所以你可以創建一個不屬於路由值的屬性。這聽起來像是你試圖排除一個應該包含的值,以便進行路線匹配。不過,如果你仍然對此感到困惑,那麼可能值得問一個新問題。 – NightOwl888 2014-12-04 16:07:18