SiteMapPath控件

本文介绍如何通过SiteMapPath控件实现在网站中添加Breadcrumb导航功能,帮助用户了解所在位置及返回路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个控件用于为站点添加breadcrumb功能,帮助用户查看位于站点中的什么层次结构。Wrox United站点演示了这个功能。

    术语breadcrumb很可能来源于一个古老的童话Hansel and Gretel两个孩子到深林中探险,他们在身后留下一串面包碎屑以便能找到回家的路。当用户单击浏览站点的页面时,可能会移动到不同的区域或子区域,直到经由数个链接深入到应用程序内部。breadcrumb可以帮助用户返回到浏览路径上的某个点,而不用依赖于浏览器的返回按钮。您可能遇到过这样的情况,使用返回按钮无法返回某个链接──相当于乌鸦吃掉了留在地上的面包屑。有些页面以一种独特的方式向服务器提交信息,如果不再次提交信息将无法返回这个页面。

    Internet上的很多站点都提供breadcrumb功能。Wrox United就是一个,如图3-30所示。然而,为了向站点添加其中某个控件,必须首先创建Web.SiteMap文件。已经有这个文件啦?是的!(如果没有,需要返回到第2章学习怎样创建该文件!)

    在创建Web.SiteMap文件之后,添加SiteMapPath控件并查看结果就很容易了──所需做的就是在页面上添加该控件。要在Wrox United站点中添加这个控件,最好是把它添加到Master页面,这样所有的Content页面都同时获得了导航的功能!

    在下一个"试一试"中,需要使用Wrox United应用程序的Chapter03版本(保存在下载代码的Chapter03文件夹内,名称是WroxUnited).作者已经修改了这个版本,从而使您可以完成这些练习。

    如果打开第3章的WroxUnited应用程序,将会看到画面。如果所看到的不同,不用担心──VWD在显示使用CSS的页面时有些问题,所以不用滚动就可以看到大部分网页。

    虽然这个站点看起来很正常,但缺少两样东西:页面左边的链接和页面底部的breadcrumb.在下面的试一试中,将为站点添加这两项内容,并查看添加导航功能是多么简单。

    (1)打开第3章的Wrox United应用程序(C:\BegASPNET2\Chapters\Begin\ Chapter03\WroxUnited)并打开site.master文件。确保位于Design View中。

    (2)将光标放置在页面底部的Breadcrumbs div内部──它是页面右下方的红色物体。当在窗口右下方看到<div#breadcrumbs>以高亮显示时,表示找到了正确的控件。

    (3)现在从工具箱的Navigation区将SiteMapPath控件拖放到Breadcrumbs div内。

    (4)忽略该控件的Common Task菜单──这里只需要修改控件的名称。确保选中SiteMapPath控件并在Properties面板中将其ID修改为crumbs.注意在图3-34中鼠标光标高亮显示该控件的ID属性。

200912154366.jpg

 

 

 

 

 

 

 

 

 

(5)现在再次启动Default.aspx页面运行站点并查看位于页面底部的工作结果,注意作者浏览器中的URL是http:/localhost:1621/WroxUnited/default.aspx.您的端口号(冒号后面的数字)可能会与此不同。

    (6)将URL的Default. aspx部分修改为History.aspx以浏览History页面。

    操作回顾

    在这个例子中,将向一个修改过的Wrox United站点中添加了一个SiteMapPath控件,从而可以向用户反馈正在查看的是哪个页面,以及这个页面在站点中位于哪个层次结构。只要向页面添加这个控件就可以获得该功能,因为在应用程序文件中已经包含了一个Web.SiteMap文件。

    SiteMapPath控件会挂钩到Web.SiteMap文件(如果存在的话)并通过计算用户正在查看的页面、以及该页面在站点地图中所处的节点顺序动态解释这个文件的内容。下面是与您查看的节点相关的Web.SiteMap代码。

 

<siteMap>

  <siteMapNode title="Home" url="Default.aspx"

              description="Wrox United Home Page">

...

<siteMapNode title="About" description="About the club" url="about.aspx">

             <siteMapNode title="History" url="History.aspx"

                            description="The history of the club" />

    注意History节点位于About节点的内部,而About节点又位于Home节点的内部,所以当用户查看History页面的时候,可以看到该页面位于About页面的后面,而根节点是Home节点──这就是在SiteMapPath控件上看到的具体内容:
    Home>About>History

    如果导航到层次结构的其他部分(到Match Fixtures、 Future Fixtures或Past Fixtures页面),SiteMapPath控件上显示的内容将相应地发生变化。因此,导航到Fixtures.aspx?type=future页面时该控件上显示的内容是:
    Home>Fixtures>Future  Fixtures

    下面的代码显示了SiteMapPath控件是怎样添加到页面的:

 

<div id=”breadcrumbs”>

<asp:SiteMapPath ID=”crumbs” runat=”server”>

</asp:SiteMapPath>

 

    不用对控件进行任何定制(不需要设置任何特定的属性),就可以显示Web.SiteMap的节点。该控件所使用的样式完全由页面的样式表控制.

2. SiteMapPath控件的属性

    在前面的"试一试"练习中,添加了一个SiteMapPath控件,没有进行任何修改该控件就可以显示Web.SiteMap文件中列出的节点。如果希望修改它以限制显示的层次数,就可以以不同的方式使用该控件;例如,可以将当前页面的名称显示为一个标题:

    <asp:SiteMapPath ID="PageTitle" Runat="server" ParentLevelsDisplayed="0">
    </asp:SiteMapPath>

    因此,在进行以上修改之后,站点地图节点将只显示当前页面的名称;以History.aspx页面为例,SiteMapNode控件将只显示History。

    另一个可以修改的内容是修改路径分隔符字符,例如:
    <asp:SiteMapPath ID="crumbs" Runat="server" PathSeparator=":">
    </asp:SiteMapPath>

    如果再次导航到History.aspx页面,用户将看到以下内容:
    Home:About:History

    除了这两个属性之外,开发人员还可以设置其他很多属性以定制这个控件。表3-2列出了其中一些属性。

    在学习了SiteMapPath控件的工作原理之后,我们将继续学习其他两个导航控件:Menu控件和TreeView控件。然而,要在页面上使用这两个控件,需要添加一个不同类型的控件为它们提供数据;该控件是SiteMapDataSowrce。

    3. SiteMapDataSource控件

    这个控件是非可视的控件,它用于以一种Menu和Tree View控件能够理解的方式处理定义在Web.SiteMap文件中的节点,从而可以修改这些控件将要显示的内容。

    要在站点中添加这个控件,只需拖动一个副本到页面上。这就是所有的操作。VWD产生的代码在Source View中如下所示:
    <asp: SiteMapDataSource ID="siteMapDataSource1" runat="server" />

    在下一个"试一试"练习中,将自行添加这个控件以便可以使用Menu控件。Menu控件用于为Wrox United站点提供导航的功能,从而不必输入链接;让我们看一看这是怎样和SiteMapDataSource控件联系在一起的。

 

 

转载于:https://www.cnblogs.com/dragonchen/archive/2011/09/24/sitemap.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值