Атрибут добавляется как строка запроса
Я пытаюсь иметь несколько attributesToIgnore
так что я настроил это так:
attributesToIgnore="hideOnStandard, hideFormatting"
и мой Mvc.sitemap
:
<mvcSiteMapNode title="Filters" controller="Parameterized">
<mvcSiteMapNode title="Filters" controller="Parameterized" action="Index"/>
<mvcSiteMapNode title="Output" controller="Parameterized" action="Output" preservedRouteParameters="id" hideOnStandard="true"/>
<mvcSiteMapNode title="Formatting" controller="Parameterized" action="Formatting" preservedRouteParameters="id" hideFormatting="true" />
</mvcSiteMapNode>
Тем не менее, он добавляет hideFormatting="true"
к строке запроса для тега привязки, например:
<a href="/Home/Reports/Formatting/29119?hideFormatting=true">Formatting</a>
Как я могу на самом деле выполнить то, что я пытаюсь сделать? Я пытался разграничить attributesToIgnore
иначе, но кроме этого я не совсем уверен, как еще поступить. Я действительно не хочу использовать jQuery или что-то, чтобы убрать строку запроса.
РЕДАКТИРОВАТЬ
Как я знаю, что сделать:
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using System.Web.Mvc.Html
@using MvcSiteMapProvider.Web.Html.Models
<ul class="navProgress">
@foreach (var node in Model.Nodes)
{
if (!(node.MetaAttributes.Keys.Contains("hideOnStandard") && TempData["IsStandard"] != null && ((bool)TempData["IsStandard"])))
{
if (!(node.MetaAttributes.Keys.Contains("hideFormatting") && TempData["hideFormatting"] != null && ((bool)TempData["hideFormatting"])))
{
<li @(node.IsCurrentNode ? "class=active" : "")>
@Html.DisplayFor(m => node)
@if (node.Children.Any())
{
@Html.DisplayFor(m => node.Children)
}
</li>
}
}
}
</ul>
1 ответ
Решение
Согласно документации MvcSiteMapProvider v3, attributesToIgnore
должны быть добавлены к <siteMap>
раздел web.config
,
<siteMap>
<providers>
<add name="MvcSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
siteMapFile="~/Mvc.Sitemap"
securityTrimmingEnabled="true"
cacheDuration="5"
enableLocalization="true"
scanAssembliesForSiteMapNodes="true"
excludeAssembliesForScan=""
includeAssembliesForScan=""
attributesToIgnore="hideOnStandard,hideFormatting"
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider"
aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
routeMethod=""
siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider"
siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
</providers>
</siteMap>
Я верю в v3.x, вы также должны были убедиться, что после запятой нет пробела, иначе он не будет правильно соответствовать атрибуту.
Использование:
attributesToIgnore="hideOnStandard,hideFormatting"
Скорее, чем:
attributesToIgnore="hideOnStandard, hideFormatting"