Хлебные крошки MVC SiteMapProvider меняются › на что-то другое

То, как MVC SiteMapProvider выкладывает хлебные крошки, они отображаются как

Главная > Детали > Управление проектом

Что мне делать, если я хочу изменить «>» на другой символ (или, в моем конкретном случае, на значок в начальной загрузке Twitter)?

На данный момент я вызываю хлебные крошки, используя @Html.MvcSiteMap().SiteMapPath()

Я зашел в Views/Shared/DisplayTemplates/SiteMapPathHelperModel и попытался изменить

<text> &gt; </text>

to:

<text><i class="icon-chevron-right"></i></text>

но больший тогда символ остался. Я не получил никаких ошибок.

Вот некоторый потенциально релевантный код из частичного представления, использующего хлебные крошки:

@if(Request.IsAuthenticated) 
{

    <div class="breadcrumb trail">
        <i class="icon-home"></i>
        @Html.MvcSiteMap().SiteMapPath()
    </div>            
    <p align ="right">   
    <i class="icon-user"></i> <text>Welcome <strong>@User.Identity.Name</strong>!
        [ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
    </p>
}
else
{
    @* display nothing*@
}

Вот карта сайта, объявленная в web.config:

<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" nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" />
  </providers>
</siteMap>

Код в шаблоне SiteMapPathHelperModel.cshtml:

@model MvcSiteMapProvider.Web.Html.Models.SiteMapPathHelperModel
@using System.Web.Mvc.Html
@using System.Linq
@using MvcSiteMapProvider.Web.Html.Models

@foreach (var node in Model) { 
    @Html.DisplayFor(m => node);

    if (node != Model.Last()) {
       @*Original Symbol*@
       @* <text> &gt; </text> *@
       <text> &rsaquo; </text>
    }
}

Я совсем не в том, как я собираюсь это делать, или я просто что-то упускаю?

ОБНОВЛЕНИЕ Вы можете передать шаблон в метод SiteMapPath в виде строки. Пытаясь сделать это в частичном представлении, которое вызывает этот метод, я передаю его так:

@Html.MvcSiteMap().SiteMapPath("SiteMapPathHelperModel")

Я удалил файл acsx из проекта, чтобы он не попадал сюда по умолчанию (я хочу, чтобы он использовал шаблон cshmtl). Я изменил код шаблона, чтобы использовать другой символ, и перестроил, сохранил все, а затем запустил проект.

Несмотря на все это, он по-прежнему использует символ «>» по умолчанию.


person Lisa Lemons    schedule 24.07.2012    source источник
comment
Не могли бы вы разместить код в шаблоне?   -  person Xharze    schedule 25.07.2012
comment
Это правильно, что шаблон использует '‹' на данный момент, это то, что он содержит. Ты не менял?   -  person Xharze    schedule 25.07.2012
comment
@Xharze Я сделал это для значков, а также попытался изменить его на другой символ, но ничего не изменилось.   -  person Lisa Lemons    schedule 25.07.2012
comment
@Xharze из MCSiteMapProvider? 3.2.3.0 (через NuGet)   -  person Lisa Lemons    schedule 25.07.2012


Ответы (1)


Попробуйте переименовать файл .ascx во что-то другое. Даже если вы удалите файл из проекта, он все равно может попытаться его использовать.

person moutonc    schedule 25.07.2012
comment
Не проблема, я столкнулся с этой проблемой в проекте, над которым работал некоторое время назад. - person moutonc; 25.07.2012