网站地图

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

asp.net提供了网站地图提供器xmlSiteMapPRovider,使用XmlSiteMapProvider可以从XML文件中获取网站地图信息。

XmlSiteMapProvider会从根目录中寻找名为Web.sitemap的文件来读取信息,在解析Web.sitemap文件中的网站地图数据后创建一个网站地图对象,此网站地图对象能够被SiteMapDataSource使用,SiteMapDataSource可以被放置在页面上的导航控件使用,最终由导航控件把网站的导航信息显示在页面上。

创建网站地图

使用VS创建的站点地图文件会自动生成组成网站地图的基本结构。

创建站点地图要遵循的原则

1.网站地图以<siteMap>元素开始以</siteMap>元素结束。其他信息放在<siteMap>元素和</siteMap>元素之间。

2.每一页由<siteMapNode>元素来描述。每一个站点地图文件定义了一个网站的页面组织结构,可以使用<siteMapNode>元素向这个组织结构插入一个页面,页面包含页面的名称、页面的描述以及URL。

3.<siteMapNode>元素可以嵌套。一个<siteMapNode>元素表示一个页面,通过嵌套<siteMapNode>元素可以形成树型结构的页面组织结构。

4.每一个站点地图都是以单一的<siteMapNode>元素开始的。每一个站点地图都要包含一个根节点,其他的所有节点都包含在根节点中。

5.不允许重复的URL。在站点地图文件中,可以没有URL,但不允许重复的URL出现,因为SiteMapProvider是以集合的形式来存储节点的,而每项是以URL为索引的。

如果想要在不同的层次引用相同的界面,需要修改URL来实现使用站点地图文件进行网站的导航。例如:

<siteMapNode url="~/Form1.aspx?name=name1" title="主页" description="主页" />

<siteMapNode url="~/Form2.aspx?name=name2" title="主页" description="主页" />

网站地图的使用

把站点文件绑定到页面

1. 确定Web.sitemap文件使用到的页面都存在于网站项目中。

2. 在页面上添加一个SiteMapDataSource控件。

3. 添加一个绑定到SiteMapDataSource控件的导航控件。设置导航的控件的属性DataSourceID为SiteMapDataSource控件的ID。

使用实例1

在普通页面中绑定站点文件。

新建站点地图文件Web.sitemap,代码如下:

1<?xml version="1.0" encoding="utf-8"?>2<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">3<siteMapNodeurl="~/Default.aspx"title="主页"description="网站主页">4<siteMapNodetitle="图书"description="图书内容">5<siteMapNodetitle="C#"description="C#图书">6<siteMapNodeurl="~/WebForm1.aspx"title="轻松学C#"description="轻松学C#"/>7<siteMapNodeurl="~/WebForm2.aspx"title="深入浅出C#"description="深入浅出C#"/>8</siteMapNode>9<siteMapNodetitle="C语言"description="C语言图书">10<siteMapNodeurl="~/WebForm3.aspx"title="C语言程序设计"description="C语言程序设计"/>11<siteMapNodeurl="~/WebForm4.aspx"title="C语言课程设计"description="C语言程序设计"/>12</siteMapNode>13<siteMapNodetitle="C++"description="C++图书">14<siteMapNodeurl="~/WebForm5.aspx"title="C++语言程序设计"description="C++语言程序设计"/>15<siteMapNodeurl="~/WebForm6.aspx"title="C++语言课程设计"description="C++语言课程设计"/>16</siteMapNode>17</siteMapNode>18</siteMapNode>19</siteMap>

View Code

创建站点地图中使用到的页面,在Default.aspx.cs中添加SiteMapDataSource和TreeView控件,代码如下:

1<div>2<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"/>3<asp:TreeViewID="TreeView1"runat="server"4DataSourceID="SiteMapDataSource1"/>5</div>

View Code

使用实例2

在母版页中绑定站点文件

新建站点地图文件Web.sitemap,代码如下:

1<?xml version="1.0" encoding="utf-8"?>2<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">3<siteMapNodeurl="~/Default.aspx"title="主页"description="网站主页">4<siteMapNodetitle="图书"description="图书内容">5<siteMapNodetitle="C#"description="C#图书">6<siteMapNodeurl="~/WebForm1.aspx"title="轻松学C#"description="轻松学C#"/>7<siteMapNodeurl="~/WebForm2.aspx"title="深入浅出C#"description="深入浅出C#"/>8</siteMapNode>9<siteMapNodetitle="C语言"description="C语言图书">10<siteMapNodeurl="~/WebForm3.aspx"title="C语言程序设计"description="C语言程序设计"/>11<siteMapNodeurl="~/WebForm4.aspx"title="C语言课程设计"description="C语言程序设计"/>12</siteMapNode>13<siteMapNodetitle="C++"description="C++图书">14<siteMapNodeurl="~/WebForm5.aspx"title="C++语言程序设计"description="C++语言程序设计"/>15<siteMapNodeurl="~/WebForm6.aspx"title="C++语言课程设计"description="C++语言课程设计"/>16</siteMapNode>17</siteMapNode>18</siteMapNode>19</siteMap>

View Code

新建母版页,在母版页中添加如下代码:

1<div>2<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"/>3<table>4<tr>5<td>6<asp:TreeViewID="TreeView1"runat="server"DataSourceID="SiteMapDataSource1"/>7</td>8<td>9<asp:ContentPlaceHolderID="ContentPlaceHolder1"runat="server"/>10</td>11</tr>12</table>13</div>

View Code

创建站点地图中使用到的页面,在页面Default.aspx中添加页面属性MasterPageFile="~/Navigation.Master",修改页面Default.aspx,代码如下:

1<%@ Page Language="C#"MasterPageFile="~/Navigation.Master"AutoEventWireup="true"CodeBehind="WebForm2.aspx.cs"Inherits="Webapplication1.WebForm2"%>23<asp:ContentID="Content1"ContentPlaceHolderID="head"runat="server"/>4<asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"runat="server"/>

View Code

使用实例3

SiteMapDataSource控件属性的应用

新建站点地图文件Web.sitemap,代码如下:

1<?xml version="1.0" encoding="utf-8"?>2<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">3<siteMapNodeurl="~/Default.aspx"title="主页"description="网站主页">4<siteMapNodetitle="图书"description="图书内容">5<siteMapNodetitle="C#"description="C#图书">6<siteMapNodeurl="~/WebForm1.aspx"title="轻松学C#"description="轻松学C#"/>7<siteMapNodeurl="~/WebForm2.aspx"title="深入浅出C#"description="深入浅出C#"/>8</siteMapNode>9<siteMapNodetitle="C语言"description="C语言图书">10<siteMapNodeurl="~/WebForm3.aspx"title="C语言程序设计"description="C语言程序设计"/>11<siteMapNodeurl="~/WebForm4.aspx"title="C语言课程设计"description="C语言程序设计"/>12</siteMapNode>13<siteMapNodetitle="C++"description="C++图书">14<siteMapNodeurl="~/WebForm5.aspx"title="C++语言程序设计"description="C++语言程序设计"/>15<siteMapNodeurl="~/WebForm6.aspx"title="C++语言课程设计"description="C++语言课程设计"/>16</siteMapNode>17</siteMapNode>18</siteMapNode>19</siteMap>

View Code

新建母版页,在母版页中添加如下代码:

1<div>2<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"StartFromCurrentNode="true"/>3<asp:SiteMapDataSourceID="SiteMapDataSource2"runat="server"StartingNodeUrl="~/Form2.aspx"/>4<table>5<tr>6<td>7<asp:TableID="Table1"text="当前页下的页面"runat="server"/>8<

br/>9<asp:TreeViewID="TreeView1"runat="server"DataSourceID="SiteMapDataSource1"/>10<

br/>11<asp:TableID="Table2"text="固定页面"runat="server"/>12<

br/>13<asp:TreeViewID="TreeView2"runat="server"DataSourceID="SiteMapDataSource2"/>14</td>15<td>16<asp:ContentPlaceHolderID="ContentPlaceHolder1"runat="server"/>17</td>18</tr>19</table>20</div>

View Code

创建站点地图中使用到的页面,在页面Default.aspx中添加页面属性MasterPageFile="~/Navigation.Master",修改页面Default.aspx,代码如下:

1<%@ Page Language="C#"MasterPageFile="~/Navigation.Master"AutoEventWireup="true"CodeBehind="WebForm3.aspx.cs"Inherits="WebApplication1.WebForm3"%>23<asp:ContentID="Content1"ContentPlaceHolderID="head"runat="server"/>4<asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"runat="server"/>

View Code

使用实例4

新建站点地图文件Web.sitemap,代码如下:

1<?xml version="1.0" encoding="utf-8"?>2<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">3<siteMapNodeurl="~/Default.aspx"title="主页"description="网站主页">4<siteMapNodetitle="图书"description="图书内容">5<siteMapNodetitle="C#"description="C#图书">6<siteMapNodeurl="~/WebForm1.aspx"title="轻松学C#"description="轻松学C#"/>7<siteMapNodeurl="~/WebForm2.aspx"title="深入浅出C#"description="深入浅出C#"/>8</siteMapNode>9<siteMapNodetitle="C语言"description="C语言图书">10<siteMapNodeurl="~/WebForm3.aspx"title="C语言程序设计"description="C语言程序设计"/>11<siteMapNodeurl="~/WebForm4.aspx"title="C语言课程设计"description="C语言程序设计"/>12</siteMapNode>13<siteMapNodetitle="C++"description="C++图书">14<siteMapNodeurl="~/WebForm5.aspx"title="C++语言程序设计"description="C++语言程序设计"/>15<siteMapNodeurl="~/WebForm6.aspx"title="C++语言课程设计"description="C++语言课程设计"/>16</siteMapNode>17</siteMapNode>18</siteMapNode>19</siteMap>

View Code

创建站点地图中使用到的页面,在Default.aspx.cs中添加SiteMapDataSource和TreeView控件,代码如下:

1<div>2<h4>当前节点</h4>3<asp:LabelID="Label1"runat="server"/>4<h4>子节点</h4>5<asp:LabelID="Label2"runat="server"/>6<h4>网站地图</h4>7<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"/>8<asp:TreeViewID="TreeView1"runat="server"DataSourceID="SiteMapDataSource1"/>9</div>

View Code

在Default.aspx.cs页面中的Page_Load事件中添加如下代码:

1try2{3stringtext ="";4Label1.Text = SiteMap.CurrentNode.Title;//显示当前节点的标题5if(SiteMap.CurrentNode.HasChildNodes)//判断当前节点是否存在子节点6{7foreach(SiteMapNode childNodesin8SiteMap.CurrentNode.ChildNodes)9text = text + childNodes.Title +"<br/>";10}11Label2.Text =text;12}13catch(System.NullReferenceException ex)14{15Label1.Text ="该节点不在网站地图中";16}17catch(Exception ex)18{19Label1.Text =e.ToString();20}

View Code

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航