• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET站点导航(一)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这几天闲来无事,就在园子里找前辈们关于ASP.NET站点导航的东西,找了好半天,不过颇有收获,呵呵!但是我想先把我自己看到的关于ASP.NET站点导航控件的知识摘抄下来,以备后用:

您可以使用 ASP.NET 站点导航功能为用户导航站点提供一致的方法。随着站点内容的增加以及您在站点内来回移动网页,管理所有的链接可能会变得比较困难。ASP.NET 站点导航使您能够将指向所有页面的链接存储在一个中央位置,并在列表中呈现这些链接,或用一个特定 Web 服务器控件在每页上呈现导航菜单。

若要为站点创建一致的、容易管理的导航解决方案,可以使用 ASP.NET 站点导航。ASP.NET 站点导航提供下列功能:

  • 站点地图 您可以使用站点地图描述站点的逻辑结构。接着,可通过在添加或移除页面时修改站点地图(而不是修改所有网页的超链接)来管理页导航。

  • ASP.NET 控件 您可以使用 ASP.NET 控件在网页上显示导航菜单。导航菜单以站点地图为基础。

  • 编程控件 您可以以代码方式使用 ASP.NET 站点导航,以创建自定义导航控件或修改在导航菜单中显示的信息的位置。

  • 访问规则 您可以配置用于在导航菜单中显示或隐藏链接的访问规则。

  • 自定义站点地图提供程序 您可以创建自定义站点地图提供程序,以便使用自己的站点地图后端(如存储链接信息的数据库),并将提供程序插入到 ASP.NET 站点导航系统。

通过 ASP.NET 站点导航,可以按层次结构描述站点的布局。例如,一家虚拟在线计算机商店的站点共有八页,其布局如下。

Home
   Products
      Hardware
      Software
   Services
      Training
      Consulting
      Support

若要使用站点导航,请先创建一个站点地图或站点的表示形式。您可以用 XML 文件描述站点的层次结构,但也可以使用其他方法。有关更多信息及示例,请参见 ASP.NET 站点地图

在创建站点地图后,可以使用站点导航控件在 ASP.NET 页上显示导航结构。有关示例,请参见如何:添加简单的站点导航

站点地图加载进程

默认的 ASP.NET 站点地图提供程序会加载站点地图数据作为 XML 文档,并在应用程序启动时将其作为静态数据进行缓存。超大型站点地图文件在加载时可能要占用大量的内存和 CPU 资源。ASP.NET 站点导航功能根据文件通知来使导航数据保持为最新的。更改站点地图文件时,ASP.NET 会重新加载站点地图数据。请确保将所有病毒扫描软件配置为不会修改站点地图文件。有关更多信息,请参见保证 ASP.NET 站点导航的安全

站点导航控件

创建一个反映站点结构的站点地图只完成了 ASP.NET 站点导航系统的一部分。导航系统的另一部分是在 ASP.NET 网页中显示导航结构,这样用户就可以在站点内轻松地移动。通过使用下列 ASP.NET 站点导航控件,您可以轻松地在页面中建立导航信息:

  • 此控件显示导航路径(也称为面包屑或眉毛链接)向用户显示当前页面的位置,并以链接的形式显示返回主页的路径。此控件提供了许多可供自定义链接的外观的选项。

  • 此控件显示一个树状结构或菜单,让用户可以遍历访问站点中的不同页面。单击包含子节点的节点可将其展开或折叠。

  • 此控件显示一个可展开的菜单,让用户可以遍历访问站点中的不同页面。将光标悬停在菜单上时,将展开包含子节点的节点。

如果在上述示例中将 控件添加到在线计算机商店的“Training”(培训)页中, 控件将显示如下内容,其中“Home”(主页)和“Services”(服务)呈现为超链接的形式:

主页 > 服务 > 培训

您可以使用 控件创建站点导航,既不用编写代码,也不用显式绑定数据。此控件可自动读取和呈现站点地图信息。但是,如果需要,也可以使用代码自定义 控件。有关示例,请参见如何:以编程方式修改内存中的站点地图节点

控件使用户能够从当前页导航回站点层次结构中较高的页。但是, 控件不允许从当前页向前导航到层次结构中较深的其他页面。在新闻组或留言板应用程序中,当用户想要查看他们正在浏览的文章的路径时,就可以使用 控件。

通过 控件,用户可以打开节点并直接导航到特定的页。这些控件不会像 控件那样直接读取站点地图。相反,您需要在页上添加一个可读取站点地图的 控件。然后,将 控件绑定到 控件,从而将站点地图呈现在该页上。 控件将显示如下的类似内容:

- Home

- Services

+ 培训

注意:

在站点中的所有页上显示 控件有一个简便方法,就是先创建一个母版页,然后将这些控件添加到该页上。有关更多信息,请参见 ASP.NET 母版页概述

站点导航 API

通过导航控件,您只需编写极少的代码甚至不需要代码,就可以在页面中添加站点导航;不过您也能以编程的方式处理站点导航。当 Web 应用程序运行时,ASP.NET 公开一个反映站点地图结构的  对象 对象的所有成员均为静态成员。而 对象会公开 对象的集合,这些对象包含地图中每个节点的属性。(在使用 控件时,该控件会使用 对象自动呈现相应的链接。

SiteMapNode 对象表示站点地图结构中的一个网站页面。SiteMapNode 对象由静态 SiteMap 类使用一个或多个站点地图提供程序在运行时加载,从而将站点地图数据从永久存储区加载到内存中。SiteMapNode 对象由 SiteMapNodeItem 类包装以供 Web 服务器控件(如 SiteMapPath 控件)使用。

SiteMapNode 类包括几个用于描述网站中单个页(包括某一页)的属性,如 Url、Title 和 Description 属性; 而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用,该类将这一属性作为内部集合的查找键,提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性,站点地图提供程序使用该属性来跟踪节点。此外,Url 属性还由导航控件使用,以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称,通常与 Web 窗体的 HTML 标题相同,并由导航控件用于呈现简单的标签。最后,附加 Attributes 属性的 集合可供某些站点地图提供程序使用,这些提供程序使用 SiteMapNode 对象,但需要 SiteMapNode 基类中未提供的附加属性。

您可以在自己的代码中使用 对象来遍历站点地图结构,或创建自定义的控件来显示站点地图数据。您不能向站点地图进行写入,但可以在对象的实例中修改站点地图节点。有关更多信息,请参见如何:以编程方式修改内存中的站点地图节点如何:以编程方式枚举站点地图节点

即需填充 TreeNode 数据

静态定义数据结构有时是不可行的,或者数据可能会依赖运行时收集的信息。为了动态显示数据, 控件支持动态节点填充。将 控件配置为即需填充时,该控件将在用户展开节点时引发事件。事件处理程序检索相应数据,然后填充到用户单击的节点。若要以数据即需填充 对象,请将节点的 属性设置为 true,并创建 事件处理程序以向 对象中填充数据。

客户端 TreeView 节点填充

任何在浏览器功能配置文件中将 属性设置为 true 的浏览器都支持客户端节点填充。

借助客户端节点填充, 控件可以通过从客户端脚本中调用服务器的 事件来填充节点,而无需完全回发至服务器。有关客户端节点填充的更多信息,请参见

启用客户端脚本

默认情况下,在高级 (Up-level) 浏览器中, 控件上的节点的展开 - 折叠功能是使用客户端脚本执行的。由于控件不需要回发至服务器来呈现新配置,所以使用客户端脚本可以提高呈现的效率。

注意:

如果浏览器中的客户端脚本被禁用或浏览器不支持客户端脚本,则 控件将恢复到低级(Down-level)模式并在每次用户单击节点时回发到服务器。

TreeView 回发

默认情况下,除非浏览器不支持客户端脚本或者 属性被设置为 false,否则 控件将在客户端处理展开 - 折叠功能。如果 属性被设置为 true 并且浏览器支持客户端脚本,那么 控件将从服务器检索数据,而不回发整页。

控件处于选择模式时,每次用户单击节点时都将回发到服务器并引发 事件。

通常,您应该在 控件处于选择模式或正在动态填充节点时处理回发事件。原因是 属性已设置为 true

将 TreeView 控件与 UpdatePanel 控件一起使用

控件用于通过回发更新页面的选定区域,而不是更新整个页面。可在 控件内使用 控件,但具有以下限制:

  • 回调必须与异步回发关联,否则回调事件验证将会失败。在将 控件的 属性设置为 true 时,即启用了回调。可以使用以下方法之一来确保 回调对 控件起作用:

    • 如果 控件不在 控件内,则在不是异步回发的一部分的 控件上禁用回调。为此,需要将 属性设置为 false

    • 以编程方式刷新在异步回发过程中注册回调的所有控件。例如,可以将 控件放置在 控件内。 控件不必位于发起异步回发的 控件中,只要包含 控件的 控件刷新即可。

  • 必须使用对级联样式表 (CSS) 类的引用来应用样式。例如,使用属性-CssClass(其中属性指 Property)属性 (Attribute) 来设置样式,而不是使用属性-子属性(其中属性指 Property)属性 (Attribute) 设置 属性 (Property)。同样,在使用 模板设置样式时,请使用模板的 CssClass 属性 (Attribute)。

  • 属性必须为 true(默认值)。此外,如果对 控件启用了回调,则不能在异步回发之间更改 属性。

有关使用 控件的更多信息,请参见 UpdatePanel 控件概述部分页呈现概述

 

站点导航组件之间的关系

下面的示意图演示了各个 ASP.NET 站点导航组件之间的关系。

抄自MSDN


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.net:Regex.Match方法中应该注意的几个问题发布时间:2022-07-10
下一篇:
Asp.net下载功能的解决方案发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap