使用MvcSitemapprovider MVC 5 Unity忽略RouteValues

时间:2014-12-04 00:39:36

标签: c# asp.net-mvc asp.net-mvc-5 unity-container mvcsitemapprovider

我使用NuGet的MvcSiteMapProvider软件包在Unity DI上安装了MVC 5应用程序。我正在尝试在我的MvcSiteMapProvider_AttributesToIgnore文件中使用忽略web.config appSetting,如下所示

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

但是当显示我的站点地图时,网址会将被忽略的值作为查询字符串。

MvcSiteMapProvider文档中有一节内容为

  

如果使用外部DI容器,可以在名为“attributesToIgnore”的参数中的ReservedAttributeNameProvider的构造函数中找到此设置,该参数类型为IEnumerable

我正在使用Unity,所以我想知道是否需要以某种方式将其添加到我的容器中,但我不知道如何。

关于如何忽略路线值的任何想法?

1 个答案:

答案 0 :(得分: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" }));

提示:您可以通过临时修改类并使用Intellisense查看参数来始终找出类具有的依赖关系。

new ReservedAttributeNameProvider( 

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