网站地图
2018-06-22 06:53:15来源:未知 阅读 ()
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 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url="~/Default.aspx" title="主页" description="网站主页"> 4 <siteMapNode title="图书" description="图书内容"> 5 <siteMapNode title="C#" description="C#图书"> 6 <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/> 7 <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#"/> 8 </siteMapNode> 9 <siteMapNode title="C语言" description="C语言图书"> 10 <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/> 11 <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/> 12 </siteMapNode> 13 <siteMapNode title="C++" description="C++图书" > 14 <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/> 15 <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/> 16 </siteMapNode> 17 </siteMapNode> 18 </siteMapNode> 19 </siteMap>
创建站点地图中使用到的页面,在Default.aspx.cs中添加SiteMapDataSource和TreeView控件,代码如下:
1 <div> 2 <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 3 <asp:TreeView ID="TreeView1" runat="server" 4 DataSourceID="SiteMapDataSource1"/> 5 </div>
使用实例2
在母版页中绑定站点文件
新建站点地图文件Web.sitemap,代码如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url="~/Default.aspx" title="主页" description="网站主页"> 4 <siteMapNode title="图书" description="图书内容"> 5 <siteMapNode title="C#" description="C#图书"> 6 <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/> 7 <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#"/> 8 </siteMapNode> 9 <siteMapNode title="C语言" description="C语言图书"> 10 <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/> 11 <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/> 12 </siteMapNode> 13 <siteMapNode title="C++" description="C++图书" > 14 <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/> 15 <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/> 16 </siteMapNode> 17 </siteMapNode> 18 </siteMapNode> 19 </siteMap>
新建母版页,在母版页中添加如下代码:
1 <div> 2 <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 3 <table> 4 <tr> 5 <td> 6 <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/> 7 </td> 8 <td> 9 <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" /> 10 </td> 11 </tr> 12 </table> 13 </div>
创建站点地图中使用到的页面,在页面Default.aspx中添加页面属性MasterPageFile="~/Navigation.Master",修改页面Default.aspx,代码如下:
1 <%@ Page Language="C#" MasterPageFile="~/Navigation.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %> 2 3 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server" /> 4 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"/>
使用实例3
SiteMapDataSource控件属性的应用
新建站点地图文件Web.sitemap,代码如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url="~/Default.aspx" title="主页" description="网站主页"> 4 <siteMapNode title="图书" description="图书内容"> 5 <siteMapNode title="C#" description="C#图书"> 6 <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/> 7 <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#"/> 8 </siteMapNode> 9 <siteMapNode title="C语言" description="C语言图书"> 10 <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/> 11 <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/> 12 </siteMapNode> 13 <siteMapNode title="C++" description="C++图书" > 14 <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/> 15 <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/> 16 </siteMapNode> 17 </siteMapNode> 18 </siteMapNode> 19 </siteMap>
新建母版页,在母版页中添加如下代码:
1 <div> 2 <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartFromCurrentNode="true" /> 3 <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" StartingNodeUrl="~/Form2.aspx" /> 4 <table> 5 <tr> 6 <td> 7 <asp:Table ID="Table1" text="当前页下的页面" runat="server" /> 8 <br /> 9 <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/> 10 <br /> 11 <asp:Table ID="Table2" text="固定页面" runat="server" /> 12 <br /> 13 <asp:TreeView ID="TreeView2" runat="server" DataSourceID="SiteMapDataSource2"/> 14 </td> 15 <td> 16 <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" /> 17 </td> 18 </tr> 19 </table> 20 </div>
创建站点地图中使用到的页面,在页面Default.aspx中添加页面属性MasterPageFile="~/Navigation.Master",修改页面Default.aspx,代码如下:
1 <%@ Page Language="C#" MasterPageFile="~/Navigation.Master" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication1.WebForm3" %> 2 3 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server" /> 4 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server" />
使用实例4
新建站点地图文件Web.sitemap,代码如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url="~/Default.aspx" title="主页" description="网站主页"> 4 <siteMapNode title="图书" description="图书内容"> 5 <siteMapNode title="C#" description="C#图书"> 6 <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/> 7 <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#"/> 8 </siteMapNode> 9 <siteMapNode title="C语言" description="C语言图书"> 10 <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/> 11 <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/> 12 </siteMapNode> 13 <siteMapNode title="C++" description="C++图书" > 14 <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/> 15 <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/> 16 </siteMapNode> 17 </siteMapNode> 18 </siteMapNode> 19 </siteMap>
创建站点地图中使用到的页面,在Default.aspx.cs中添加SiteMapDataSource和TreeView控件,代码如下:
1 <div> 2 <h4>当前节点</h4> 3 <asp:Label ID="Label1" runat="server" /> 4 <h4>子节点</h4> 5 <asp:Label ID="Label2" runat="server" /> 6 <h4>网站地图</h4> 7 <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 8 <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" /> 9 </div>
在Default.aspx.cs页面中的Page_Load事件中添加如下代码:
1 try 2 { 3 string text = ""; 4 Label1.Text = SiteMap.CurrentNode.Title;//显示当前节点的标题 5 if (SiteMap.CurrentNode.HasChildNodes)//判断当前节点是否存在子节点 6 { 7 foreach (SiteMapNode childNodes in 8 SiteMap.CurrentNode.ChildNodes) 9 text = text + childNodes.Title + "<br/>"; 10 } 11 Label2.Text = text; 12 } 13 catch (System.NullReferenceException ex) 14 { 15 Label1.Text = "该节点不在网站地图中"; 16 } 17 catch (Exception ex) 18 { 19 Label1.Text = e.ToString(); 20 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- Asp.Net中WebForm的生命周期 2020-03-29
- ASP.NET使用Ajax返回Json对象的方法 2020-03-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash