资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第9章ASPNET中的站点导航技术9.1 站点地图站点地图,由其名称不难想象,其功能是用于定于站点结构。早些年,一些大中型的网站为了让用户便于找到合适的网页,特别定制了一些站点目录文件,称之为站点地图。在ASP.NET中,微软为了简化创建站点地图的工作,提供了一套用于导航的站点地图技术。ASP.NET中的站点地图导航技术由如下的三个组件组成:一个用于定义站点结构的XML文件,又称为站点地图文件。用来绑定到XML文件的站点地图SiteMapDataSource数据源控件。用于显示站点地图的导航控件9.1.1 定义站点地图文件 站点地图文件是一个名为Web.Sitemap的XML文件,在详细讨论该文件细节前,先来了解一下ASP.NET站点地图的基本原理。ASP.NET 3.5内置了一个称为站点地图提供者的提供者类,名为XmlSiteMapProivder,该提供者能够从XML文件中获取提供者信息。XmlSiteMapProivder将查找位于应用程序根目录中的Web.Sitemap文件,然后提取该文件中的站点地图数据并创建相应的SiteMap对象。SiteMapDataSource将使用这些SiteMap对象向导航控件提供导航信息。由上述可知,Web.sitemap必须位于应用程序的根目录下,并且不能被更改为其他的名字。如果想要具有其他命名,或者想从其他的位置来获取站点地图数据,可以创建自定义的站点地图提供者类。9.1.2 使用SiteMapPath控件 在上一小节中己经定义了一个站点导航文件,下面将演示如何使用SiteMapPath控件来显示站点的导航路径。SiteMapPath是一个非常方便的控件,可以根据在Web.sitemap定义的数据自动的显示网站的路径,并能确定当前页的位置,可以自定义导航的外观。必须理解的是只有在站点地图中列出的页才能在 SiteMapPath 控件中显示导航数据。如果将 SiteMapPath 控件放置在站点地图中未列出的页上,该控件将不会向客户端显示任何信息。下面在SiteMapPathDemo示例网站的MasterPage.master母版页面上添加一个SiteMapPath控件,从工具箱的导航栏中拖一个SiteMapPath控件到设计视图,VS2008生成的代码如下所示: 9.1.3 SiteMap类 使用SiteMapPath控件,开发人员可以不需要编写代码就可以在页面中添加站点导航,也可以对站点地图进行编程操作,ASP.NET公开了一个反映站点地图结构的静态的SiteMap对象,该对象公开SiteMapNode对象的集合,用于表示站点中的每个节点。SiteMap对象中的所有成员都是静态的,因此无需实例化SiteMap对象。SiteMap对象自身只具有两个与导航相关的属性:CurrentNode属性:用于获取当前的节点,返回SiteMapNode对象。RootNode属性:用于获取根节点,返回SiteMapNode对象。9.1.4 URL地址映射ASP.NET提供了URL地址映射的功能,尽管功能非常有限,但是还是可以简化开发人员编写自定义地址映射的麻烦。一些情况下,开发人员可能希望隐藏真实的网页地址,特别是一些保密性要求强的网站,使用地址映射就很有必要。另外一些情况就是开发人员希望保持网页的友好性,为用户提供友好助记的URL,以便于访问能很轻易的记住所到访过的网页。ASP.NET的地址映射基本上就是,映射一个对指定URL的请求到另一个URL,可以在web.config配置文件中使用块来配置URL地址映射,下面是一个简单的URL地址映射的示例代码:9.2 TreeView控件TreeView控件的应用可以说是相当的普及,每个开发人员,每个接触电脑的用户,基本上每天都有和TreeView控件打交道。这所以这么说,是因为Windows的资源管理器在侧就是一个相当经典的TreeView控件的应用,只要使用电脑,就不大可能不和资源管理器打交道。从.NET 2.0开始,微软在ASP.NET中内置了TreeView控件,大大简化了开发人员编写导航功能的复杂性。TreeView 控件用于在树结构中显示分层数据,例如目录或文件目录,并且支持下列功能: 数据绑定,允许控件的节点绑定到 XML、表格或关系数据。站点导航,通过与 SiteMapDataSource 控件集成实现。节点文本既可以显示为纯文本也可以显示为超链接。借助编程方式访问 TreeView 对象模型以动态地创建树、填充节点、设置属性等。客户端节点填充(在支持的浏览器上)。在每个节点旁显示复选框的功能。通过主题、用户定义的图像和样式可实现自定义外观。本节将详细的讨论如何使用TreeView控件开发ASP.NET应用程序的导航功能。9.2.1 使用TreeView控件为了演示使用TreeView控件,本节创建一个名为TreeViewDemo的ASP.NET Web网站。进入Default.aspx设计视图,从工具箱的导航栏中拖一个TreeView控件到设计视图,VS2008会自动弹出TreeView控件的任务窗口,在该窗口中提供了几个功能可以简化创建TreeView控件的过程,自动套用格式项可以让开发人员选择一种由VS2008预定义的树型视图格式,VS2008提供了很多时尚的树状格式,笔者的大多数项目都使用了这些预定义的格式,而且获得了很好的效果,自动套用格式窗口。选择数据源窗口让用户可以选择或者是新建一个数据源控件,本节后面将详细介绍。编辑节点项非常重要,该任务将弹出一个TreeView节点编辑器窗口,让用户在设计时为TreeView控件添加和编辑节点,可以通过节点编辑器的工具栏中添加相应的节点,在编辑器右侧的属性窗口中,可以为每个节点设置属性。自定义图标任务让用户单独为每个节点定义行图标,自定义行图标编辑器,可以在该窗口中控制节点的显示外观。显示行复选框用于确定是否在每个节点的左侧显示导航线条。9.2.2 以编程的方式添加节点使用节点编辑器以静态的方式添加节点虽然好用,但是许多情况下树状数据是动态的,需要以编程的方式进行添加。TreeView控件提供了一个Nodes属性,该属性表示TreeView控件的节点的集合。每个TreeNode对象也具有一个ChildNodes属性,表示当前节点的子节点的集合。下面来演示如何以编程的方式添加在前面使用节点编辑器添加的节点,9.2.3 使用TreeView控件导航TreeView控件可以十分方便的显示站点地图数据,比如可以通过编程的方式动态的加载站点地图数据。下面在TreeViewDemo网站上新建一个名为TreeViewSiteMap.aspx的Web窗体,并将在上一节中创建的Web.sitemap文件添加到本项目中。在TreeViewSiteMap.aspx的设计视图中添加一个TreeView控件,切换到后置代码文件中,在Page_Load事件中添加如下的代码:SiteMapDataSource 具有如下几个属性用于控制站点地图的显示:SiteMapDataSource 具有如下几个属性用于控制站点地图的显示:StartFromCurrentNode:用于指定站点地图节点是否从当前页的节点进行检索。StartingNodeUrl :指定SiteMapDatasource控件从指定的节点位置开始检索节点。StartingNodeOffset:这是一个整型值,指定SiteMapDataSource获取节点数据的深度,可以使用正整数也可以使用负数。ShowStartingNode:指示是否检索并显示起始节点9.2.4 绑定到XML文件TreeView具有显示层次结构数据的优势,而开发人员通常使用XML文件来保存层次结构的数据。TreeView控件通过与XmlDataSource控件的结合,使绑定XML文件变得非常简单。下面以分步骤的方式演示如何绑定到XML文件,步骤如下所示:(详细内容请参照本书)注意:很多开发人员希望像绑定XML文件来绑定数据库数据,TreeView控件并不能直接的绑定到SqlDataSource或者是ObjectDataSource控件。通常可以以编程的方式动态的添加节点或者是创建一个自定义的SqlHierarchicalDataSource控件,本书后面将会详细讨论。 9.2.5 按需加载节点如果要加载到TreeView控件中的数据量非常大,一次性加载将显著增加服务器端的负载和客户端内存的占用量,并且会造成请求的延迟。Treeview控件提供了按需加载的特性解决这个问题。在首次加载时,TreeView只显示顶级节点的少量数据,当用户点击TreeView中的展开节点图标时,将再次从服务器端加载所需要的数据。下面新建一个名为PopulateOnDemand.aspx的页面来演示按需加载特性的使用,在工具箱的导航栏中拖一个TreeView控件到设计视图。在设计视图中,直接添加一个根节点,重要的是要将TreeNode的PopulateOnDemand属性设置为True。表示将按需来加载子节点,声明代码如下所示:9.2.6 带复选框的TreeView控件当用户在TreeView中单击一项时,将会触发TreeView控件的SelectedNodeChanged事件。例如可以使用如下的代码来获取当前选择的节点的文本: protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) Label1.Text = TreeView1.SelectedNode.Text; SelectedNode是一个TreeNode类型,表示当前选中的节点,可以调用该节点的属性来获取节点信息。9.3 Menu控件ASP.NET提供了另一个重量级的导航控件Menu,使用该控件,开发人员可以在网页上模拟Windows的菜单导航效果。ASP.NET的Menu控件可以呈现两种模式:静态模式:Menu控件的菜单项是完全展开的,用户可以单击菜单任何菜单项。动态模式:默认只显示部分内容,当用户移动鼠标到静态内容项上时,则弹出子菜单项,类似于Windows菜单。本节将详细介绍该控件的使用方式。9.3.1 使用Menu控件VS2008同样对Menu控件提供了强大的设计时支持,下面新建一个MenuDemo的ASP.NET网站,按如下所示的步骤来使用这个功能强大的控件。9.3.2 以编程的方式添加菜单项Menu控件提供了一个Items的集合属性,这是一个MenuItemCollection集合类型的属性,可以向该属性添加菜单项来实现动态添加菜单项的效果。本小节将演示如何以编程的方式添加上一节手工创建的菜单项,使用动态编程的方式还可以从数据库、文件等多种位置导入菜单项数据,一个最常用的场合就是根据用户权限动态产生菜单项,在大型应用系统开发中经常被用到。新建一个名为DynamicInsertMenuItem.aspx的Web窗体文件,在该文件中放置一个Menu控件,并应用了彩色型的自动格式,与TreeView控件类似,Menu控件有一个MenuItemCollection类型的Items集合属性,每个MenuItem又具有一个MenuItemCollection类型的ChildItems集合属性。使用这两个属性就可以将菜单项关联起来以形成一个菜单列表。9.3.3 使用Menu控件导航Menu控件作为一种导航控件,同样的可以轻松的绑定到SiteMapDataSource控件来实现站点导航,新面新建一个名为MenuNavigate的网站来演示如何使用Menu控件进行导航。首先需要在站点根目录中添加一个Web.sitemap站点地图文件,在该文件中添加本章小节中定义的站点地图XML代码。接下来在Default.aspx文件中添加一个Menu控件,一个SiteMapDataSource控件,指定Menu控件的DatasourceID属性为该SiteMapDataSource控件,声明代码如下所示:9.3.4 一个站点地图示例下面举一个站点地图的示例,该示例使用了两个Menu控件,一个Menu控件用于显示顶层菜单,当单击顶层菜单中的不同的菜单项后,另一个菜单项显示其相应的子菜单。运行时效果如图所示。9.3.5 绑定到XML文件Menu控件也可以与XML文件进行轻松的绑定,通过将Menu控件的DataSourceID属性指定为XmlDataSource控件即可。本小节同样通过一个示例来了解如何将Menu控件绑定到一个XML文件。9.3.6 Menu控件样式Menu控件与TreeView控件类似,提供了大量的外观控制项,Menu控件具有一个MenuItemStyle菜单样式,该样式定义了与菜单项相关的属性比如ItemSpaceing、HorizontalPadding和VerticalPadding。用户可以为不同层次的菜单定义不同的样式,由于Menu控件具有两种菜单模式,因此分别提供了对这两种模式的样式定义,表列出了Menu中的一些样式及其含义。Menu控件样式静态模式样式动态模式样式样式说明StaticMenuStyleDynamicMenuStyle设置Menu控件的整个外观样式。StaticMenuItemStyleDynamicMenuItemStyle设置单个菜单项的样式StaticSelectedStyleDynamicSelectedStyle设置所选择的菜单项的样式。StaticHoverStyleDynamicHoverStyle设置当鼠标悬停在菜单项上时的样式9.3.7 为Menu控件应用模板Menu控件也支持使用模板来定义其外观,Menu控件具有两种类型的模板:StaticItemTemplate模板:包含静态菜单自定义呈现内容的模板DynamicItemTemplate模板:包含动态菜单自定义呈现内容的模板。菜单项的模板用于为菜单中的菜单项定义HTML输出,使开发人员可以完全控制Menu控件的外观。VS2008提供了简单的选项用于将菜单项变为模板,然后可以根据VS2008生成的模板代码进行控制,如图所示。9.4 小结本节介绍了ASP.NET的站点导航技术,首先介绍了站点地图,如何定义站点地图文件使用SiteMapPath显示站点地图以及SiteMap类,并简单的介绍了一下ASP.NET内置的URL地址映射功能来提供友好的URL地址名称。9.2节详细介绍了TreeView控件,这是一个功能强大的树状列表控件,提供了强大的导航功能,本章介绍了如何手动和以编程的方式添加树形节点,如何绑定到SiteMapDataSource控件以测验绑定到XML文件。TreeView控件有一个按需加载的特性,本章进行了举例说明,并讨论了如何处理在TreeView控件中的多选。9.3节讨论了另一个重量级的导航控件Menu,使用Menu控件可以创建出类似Windows应用程序的菜单,本章讨论了如何使用VS2008的设计时功能创建Menu菜单项,如何以编程的方式添加修改菜单项,Menu控件与SiteMapDataSource控件的绑定,如何绑定到XML文件以及在Menu控件中应用样式和模板。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号