MVC SiteMapProvider 布置面包屑的方式,它们的显示方式如下
首页 > 详情 > 管理项目
如果我想将“>”更改为不同的符号(或者在我的特定情况下是 twitter bootsrap 中的图标),我该怎么办?
目前我正在使用 @Html.MvcSiteMap().SiteMapPath() 调用面包屑
我进入 Views/Shared/DisplayTemplates/SiteMapPathHelperModel 并尝试更改
<text> > </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> > </text> *@
<text> › </text>
}
}
我是完全偏离了我正在做这件事的方式,还是我只是错过了什么?
更新您可以将模板作为字符串传递给 SiteMapPath 方法。在调用此方法的局部视图中尝试此操作,我将其传递如下:
@Html.MvcSiteMap().SiteMapPath("SiteMapPathHelperModel")
我已经从项目中删除了 acsx 文件,以防止它默认出现在此处(我希望它使用 cshmtl 模板)。我已将模板代码更改为使用不同的符号并重新构建、保存所有内容,然后运行该项目。
尽管如此,它仍然使用默认的“>”符号。