0

我已经通过 nuget 为我的 MVC2 项目安装了 MVCSiteMapProvider,但是我无法调整面包屑的显示。基本上我对帮助文件所做的任何更改都不会反映在浏览器中,我什至可以将整个内容注释掉,但它仍然可以在页面上正确呈现,只是使用默认标记。

我想在 Html 中添加几个类来帮助我设置面包屑菜单的样式。我尝试在整个项目中搜索渲染标记的片段,但没有返回任何结果,导致我认为构建 Html 的代码被锁定在 DLL 中。有谁知道我做错了什么?或者我怎样才能达到我想要的?

提前致谢!

我想要的标记(被忽略)在 SiteMapPathHelperModel.ascx 文件中:

<% foreach (var node in Model)
{ %>
    <div class="node-left"></div>
    <div class="node-label">
        <%=Html.DisplayFor(m => node)%>
    </div>
    <div class="node-right"></div>

<% if (node != Model.Last())
   { %>
        &gt;
<% } %>

我使用构建面包屑

<div id="breadCrumb">
   <%= Html.MvcSiteMap().SiteMapPath() %>
</div>
4

1 回答 1

1

这有点晚了,但我最近这样做了,也使用 MVC2 并且没有 Razor。我在 Views/Shared/ 中创建了一个名为“DisplayTemplates”的新文件夹,并在该文件夹中创建了一个名为“SiteMapPathHelperModel”的新 .ascx 文件...

ascx 文件包含以下代码:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcSiteMapProvider.Web.Html.Models.SiteMapPathHelperModel>" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>
<ul id="crumbs">    
    <% foreach (var node in Model.Nodes) { %>
        <% if (!node.IsClickable)
           { %>
           <li><span class="noclick"><%=Html.DisplayFor(m => node)%></span>
        <%}
           else
           { %>
            <li><%=Html.DisplayFor(m => node)%>
        <%} %>
        <% if (node.Children.Any())
            { %>
           <%=Html.DisplayFor(m => node.Children)%>
        <% } %>
        </li>
    <% } %>
</ul>

然后在您的视图中正确调用它只是一个简单的问题。为此我做了:

<div id="breadcrumbs">        
        <%= Html.MvcSiteMap().SiteMapPath() %>            
</div>

一切都很好。我需要一个特定的标记,这样我想使用的 CSS 才能正常工作。

于 2012-08-09T16:57:26.587 回答