c# - 如何在 ASP.net 页面中设置面包屑

标签 c# asp.net xml repeater sitemapprovider

我的页面文件夹层次结构是(它们都在同一个文件夹中):

Site.Master
Default.aspx
find_provider.aspx
provider.aspx

我设置了一个 Web.sitemap 页面:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="~/Default.aspx" title="Home"  description="Homepage">
        <siteMapNode url="~/find_provider.aspx" title="Provider" description="Search for provider">
            <siteMapNode url="~/provider.aspx" title="Profile" description="Shows each provider profile" />
        </siteMapNode>
    </siteMapNode>
</siteMap>

我在我的 MasterPage 中调用:

<div id="navigation">
    <ul>
        <li><asp:HyperLink runat="server" ID="lnkHome" NavigateUrl="~/Default.aspx">Home</asp:HyperLink></li>

        <asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
            <ItemTemplate>
                <li>
                    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>
                </li>
            </ItemTemplate>
        </asp:Repeater>
    </ul>

    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
</div>

所以 Default.aspx 是我的登陆页面。用户可以单击 find_provider.aspx 来搜索他们选择的提供商。对于每个提供商搜索结果,用户可以单击 PROFILE 链接以查看每个提供商的信息,即 provider.aspx 页面。

所以:

  • 如果我在主页上,我的面包屑应该是:Home
  • 如果我在查找提供商页面上,我的面包屑应该是:主页 提供商
  • 如果我在个人资料页面上,我的面包屑应该是:Home Provider 简介

相反,我在我的页面上看到了这个(无论我在哪个页面):

请帮我修改代码,以便为每个站点节点和子站点节点显示面包屑。

我想要实现的示例:

HTML:

<div class="bcHolder brClear"> <!-- BC MAIN -->
    <div class="innerBreadCrumb"> <!-- INNER BC -->
        <ul id="breadcrumb">
            <li><a href="default.aspx" title="Home"><img src="theImages/homeIcon.gif" alt="Home" title="Home" class="home" /></a></li>
            <li id="bc_fp"><a href="find_provider.aspx" title="Find a Provider">Find a Provider</a></li>
            <!--<li>{ON THE CURRENT PAGE TEXT/URL</li>-->
        </ul>
    </div> <!-- INNER BC -->
</div> <!-- BC MAIN -->

输出:

enter image description here

最佳答案

在这里引用您的问题:How to use Bootstrap style of BreadCrumb with my ASP.NET menu?

SiteMapPath 充当 <ul/> HTML 渲染中的标记。所以要在那里使用该方法,您的结构可能是这样的:

<div class="bcHolder brClear"> <!-- BC MAIN -->
    <div class="innerBreadCrumb"> <!-- INNER BC -->
        <asp:SiteMapPath ID="SiteMap1" 
        runat="server"
        PathSeparator=" / " 
        ParentLevelsDisplayed="1" 
        PathDirection="RootToCurrent"
        ShowToolTips="true">
        <CurrentNodeStyle CssClass="current-node"></CurrentNodeStyle>
        <NodeTemplate>
            <li><a href="default.aspx" title="Home"><img src="theImages/homeIcon.gif" alt="Home" title="Home" class="home" /></a></li>
            <li id="bc_fp"><a href="find_provider.aspx" title="Find a Provider">Find a Provider</a></li>
            <!--<li>{ON THE CURRENT PAGE TEXT/URL</li>-->
            </NodeTemplate>
        </asp:SiteMapPath>
    </div> <!-- INNER BC -->
</div> <!-- BC MAIN -->

然后添加解析CurrentNode超链接所需的javascript。

希望这对您有所帮助。

关于c# - 如何在 ASP.net 页面中设置面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26892575/

相关文章:

c# - Windows Phone 8 - 小循环模板动态磁贴 (159x159)

c# - ASP.NET ImageButton 链接中断站点

C# Webservice 响应 xml 显示为 pdf

Java解析XML以获取子元素值

asp.net - 加快 Web 服务的自动完成速度并避免过多的方法调用

java - 使用 JAXB 解码具有不同/动态名称的元素

c# - 自修改对象的 Ref 与 No Ref

c# - OwinContext 中的批量用户创建(性能)

c# - 必须初始化隐式类型的局部变量

asp.net - 为什么IIS7需要很长时间