您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

剖析ASP.NET2.0导航功能之控制地图信息

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-28 我要参与讨论

  一、 简介

  任何由多个页面组成的网站都需要某种导航用户接口,这是用两步来创建的。首先,必须定义站点的逻辑结构;然后,添加用户接口元素来允许用户在站点结构的各个部分之间来回移动。在ASP.NET 2.0以前,要求开发者自己来解决这两个问题。然而,到了版本2.0以后,ASP.NET提供了一个简单的方法来定义一站点的结构并且包括大量的Web控件-专门设计来显示站点导航用户接口。

  在上一篇中我们分析了怎样通过导航Web控件来创建Web.sitemap XML站点地图文件以及怎样显示站点导航信息,这包括:

  ·SiteMapPath,它显示一个breadcrumb(Home>Electronics>XBOX)

  ·TreeView,它显示一个可折迭的垂直显示的树,用于显示整个站点地图层次

  ·Menu,它显示一个水平或垂直对齐的菜单

  上一篇中只对站点地图文件和导航Web控件的功能和能力提供了一个粗略介绍。在这一部分里,我们将把注意力转到编程地控制站点地图信息,并详细地分析一下SiteMapPath导航Web控件。

  二、 站点地图

  本文中的示例使用在第一部分中创建的站点地图。你可以在第一部分看到该站点地图XML文件的精确的句法或在本文最后下载下来。站点结构的图形化表示使用于这些示例中,见下图:

   三、 编程控制站点地图  一个站点地图是一个相关联的站点地图结点的集合。典型地,每个站点地图结点包含一标题,一个URL和一个描述。上面显示的图像是站点地图的一个示例,其中每个矩形代表一个站点地图结点。ASP.NET并不要求一特别的格式来指定站点地图,尽管它的确提供了使用一XML格式文件的默认选择。(关于XML文件的细节请参考第一篇)  ASP.NET提供了一个类称为SiteMap-它提供只读的,编程地存取该站点地图。这个类被两个控件内部使用,在本文的后面我们将分析这两个类:  ·SiteMapPath-基于被访问页面和它的站点结构位置生成一个breadcrumb。具体地说,该SiteMapPath从由SiteMap.CurrentNode属性返回的结点开始,往上遍历这个层次结构直到根部。  ·SiteMapDataSource-这个控件创建一个层次结构的数据源-它映射该站点地图的结构。为了在另外的Web控件中显示站点地图信息,例如TreeView或Menu,该Web控件并不直接查询站点地图;而是,它们绑定到一个SiteMapDataSource控件-它负责读取该站点地图结构。  SiteMap类有两个属性:RootNode和CurrentNode。这两个属性都返回SiteMapNode实例。SiteMapNode类代表一个定义在站点地图中的结点并且具有描述该结点的属性-Title,Url和Description,另外还有通过编程方式控制层次结构的属性-ParentNode,ChildNodes,NextSibling,PreviousSibling,等等。  你可以在你的自己ASP.NET页中使用SiteMap类。例如,我们能在每个页面中显示Next,Previous和Up链接-这只需通过添加三个HyperLink控件到站点的主页面,另加上一点点编程以检查是否CurrentNode有一NextSibling,PreviousSibling或ParentNode。具体地说,你将添加下列标记到你的主页面:[<asp:HyperLink ID="lnkPrev" runat="server">Prev</asp:HyperLink>] |
[<asp:HyperLink ID="lnkUp" runat="server">Up</asp:HyperLink>] |
[<asp:HyperLink ID="lnkNext" runat="server">Next</asp:HyperLink>]   主页面的Page_Load事件处理器看上去如下:If SiteMap.CurrentNode IsNot Nothing Then
 '设置next/previous/up链接
 If SiteMap.CurrentNode.PreviousSibling IsNot Nothing Then
  lnkPrev.NavigateUrl = SiteMap.CurrentNode.PreviousSibling.Url
  lnkPrev.Text = "< Prev (" & SiteMap.CurrentNode.PreviousSibling.Title & ")"
 Else
  lnkPrev.NavigateUrl = String.Empty
  lnkPrev.Text = "< Prev"
 End If
 If SiteMap.CurrentNode.ParentNode IsNot Nothing Then
  lnkUp.NavigateUrl = SiteMap.CurrentNode.ParentNode.Url
  lnkUp.Text = "Up (" & SiteMap.CurrentNode.ParentNode.Title & ")"
 Else
  lnkUp.NavigateUrl = String.Empty
  lnkUp.Text = "Up"
 End If
 If SiteMap.CurrentNode.NextSibling IsNot Nothing Then
  lnkNext.NavigateUrl = SiteMap.CurrentNode.NextSibling.Url
  lnkNext.Text = "(" & SiteMap.CurrentNode.NextSibling.Title & ") Next >"
 Else
  lnkNext.NavigateUrl = String.Empty
  lnkNext.Text = "Next >"
 End If
End If   这将把三个超级链接Next,Up和Previous添加到从主页面继承的每一个页面,参见下图的快照。  四、 用SiteMapPath控件显示Breadcrumbs  SiteMapPath控件显示一个breadcrumb-它用于向用户显示他们在该站点结构中所处的位置。SiteMapPath控件的输出由下列三个因素决定: 

[1] [2] 下一页

在google里搜索更多剖析ASP.NET2.0导航功能之控制地图信息

Google
Web www.51ec.org
  • 上一篇信息学院:

  • 下一篇信息学院:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    我来说两句 对此文章发表了评论
      昵 称: *必填    ·注册用户·
      评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
    评 论
    内 容

     
    评论列表 (最新 评论仅限网友观点!)

    供求信息




    | 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明