MVC SiteMapProvider面包屑更改“>”别的东西

时间:2012-07-24 19:43:50

标签: asp.net-mvc asp.net-mvc-3 razor mvcsitemapprovider

MVC SiteMapProvider布置面包屑的方式显示为

主页>详细信息>管理项目

如果我想更改“>”该怎么办?使用不同的符号(或者在我的特定情况下是twitter boots中的图标)?

目前我正在使用@ Html.MvcSiteMap()调用面包屑.SiteMapPath()

我进入了Views / Shared / DisplayTemplates / SiteMapPathHelperModel并尝试更改

<text> &gt; </text>

为:

<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模板)。我已经更改了模板代码以使用不同的符号并重建,保存所有,然后运行项目。

它仍然使用默认的“&gt;”尽管如此,还是符号。

1 个答案:

答案 0 :(得分:2)

尝试将.ascx文件重命名为其他内容。即使您从项目中删除该文件,它仍然可能会尝试使用它。