在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这几天闲来无事,就在园子里找前辈们关于ASP.NET站点导航的东西,找了好半天,不过颇有收获,呵呵!但是我想先把我自己看到的关于ASP.NET站点导航控件的知识摘抄下来,以备后用: 您可以使用 ASP.NET 站点导航功能为用户导航站点提供一致的方法。随着站点内容的增加以及您在站点内来回移动网页,管理所有的链接可能会变得比较困难。ASP.NET 站点导航使您能够将指向所有页面的链接存储在一个中央位置,并在列表中呈现这些链接,或用一个特定 Web 服务器控件在每页上呈现导航菜单。 若要为站点创建一致的、容易管理的导航解决方案,可以使用 ASP.NET 站点导航。ASP.NET 站点导航提供下列功能:
通过 ASP.NET 站点导航,可以按层次结构描述站点的布局。例如,一家虚拟在线计算机商店的站点共有八页,其布局如下。 Home 若要使用站点导航,请先创建一个站点地图或站点的表示形式。您可以用 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 控件一起使用控件用于通过回发更新页面的选定区域,而不是更新整个页面。可在 控件内使用 控件,但具有以下限制:
有关使用 控件的更多信息,请参见 UpdatePanel 控件概述和部分页呈现概述。
站点导航组件之间的关系 下面的示意图演示了各个 ASP.NET 站点导航组件之间的关系。 抄自MSDN |
请发表评论