Attributi personalizzati nel fornitore MVCSITEMAP
-
11-12-2019 - |
Domanda
Nel mio file Mvc.sitemap
, avere il seguente nodo:
<mvcSiteMapNode title="Contato" controller="Home" action="Contato" classesCustomizadas="quebra contato" />
.
web.config
attributesToIgnore="visibility, classesCustomizadas"
Full ..
.
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
siteMapFile="~/Mvc.Sitemap"
securityTrimmingEnabled="true"
cacheDuration="5"
enableLocalization="true"
scanAssembliesForSiteMapNodes="true"
includeAssembliesForScan=""
excludeAssembliesForScan=""
attributesToIgnore="visibility, classesCustomizadas"
nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider"
controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider"
actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider"
aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider"
siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider"
siteMapNodeVisibilityProvider="MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider"
siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
</providers>
</siteMap>
Ho modificato il file "Sitemapnodemodel.cshtml" in modo da poter funzionare come segue:
.
@if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() != "MvcSiteMapProvider.Web.Html.MenuHelper")
{
<text>@Model.Title</text>
}
else if (Model.IsClickable)
{
<a href="@Model.Url " class=">>>> Classes here <<<<<">@Model.Title</a>
}
else
{
<text>@Model.Title</text>
}
Come ottenere la classe configurata nel mio file Mvc.sitemap
on attributo classesCustomizadas
e sostituisci (>>>> Classi qui <<<<<)?
Soluzione
Gli attributi personalizzati sono memorizzati nella proprietà Metaattributes su Sitemapnodemodel.
Pertanto è possibile ottenere la classe usando: @Model.MetaAttributes["classesCustomizadas"]