zoukankan      html  css  js  c++  java
  • 网站地图

    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,代码如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/Default.aspx" title="主页" description="网站主页">
    <siteMapNode title="图书" description="图书内容">
    <siteMapNode title="C#" description="C#图书馆">
    <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/>
    <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#”/>
    </siteMapNode>
    <siteMapNode title="C语言" description="C语言图书">
    <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/>
    <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/>
    </siteMapNode>
    <siteMapNode title="C++" description="C++图书">
    <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/>
    <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计"
    description="C++语言课程设计"/>
    </siteMapNode>
    </siteMapNode>
    </siteMapNode>
    </siteMapNode>

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

    <div>
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"/>
    <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/>
    </div>

    使用实例2

    在母版页中绑定站点文件

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

    <?xml version="1.0" encoding="utf-8"?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/Default.aspx" title="主页" description="网站主页">
    <siteMapNode title="图书" description="图书内容">
    <siteMapNode title="C#" description="C#图书">
    <siteMapNode url="~/WebForm1.aspx" title="轻松学C#” description="轻松学C# ”/>
    <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#” description="深入浅出C#"/>
    </siteMapNode>
    <siteMapNode title="C语言" description="C语言图书">
    <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/>
    <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/>
    </siteMapNode>
    <siteMapNode title="C++" description="C++图书">
    <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/>
    <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/>
    </siteMapNode>
    </siteMapNode>
    </siteMapNode>
    </siteMaPNode>

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

    <div>
            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"/>
     <table>
    <tr>
             <td>
                    <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/>
    </td>
    <td>
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"/>
    </td>
    </tr>
    </table>
    </div>

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

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

    使用实例3

    SiteMapDataSource控件属性的应用

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

    <?xml version="1.0" encoding="utf-8"?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap File-1.0">
    <siteMapNode url="~/Default.aspx" title="主页" description="网站主页">
    <siteMapNode  title="图书" description="图书内容">
    <siteMapNode title="C#" description="C#图书"
    <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#"/>
    <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#" description="深入浅出C#"/>
    </siteMapNode>
    <siteMapNode title="C语言" description="C语言图书">
    <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/>
    <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/>
    </siteMapNode>
    <siteMapNode title="C++" description="C++图书">
    <siteMapNode url="~/WebForm5.aspx" title="C++语言课程设计" description="C++语言课程设计"/>
    </siteMapNode>
    </siteMapNode>
    </siteMapNode>
    </siteMap>

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

    <div>
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartFromCurrentNode="true"/>
    <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" StartingNodeUrl="~/Form2.aspx"/>
    <table>
            <tr>
                   <td>
                          <asp:Table ID="Table1" text="当前页下的页面" runat="server"/>
                          <br/>
                          <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/>
                          <br />
                          <asp:Table ID="Table2" text="固定页面" runat="server"/>
                          <br/>
                          <asp:TreeView ID="TreeView2" runat="server"/>
                             </td>
                           </tr>
                          </table>
                     </div>

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

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

    使用实例4

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

    <?xml version="1.0" encoding="utf-8"?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/Default.aspx" title="主页” description="网站主页">
    <siteMapNode title="图书" description="图书内容">
    <siteMapNode title="C#" description="C# 图书">
    <siteMapNode url="~/WebForm1.aspx" title="轻松学C#" description="轻松学C#">
    <siteMapNode url="~/WebForm2.aspx" title="深入浅出C#” description="深入浅出C#"/>
    </sitemapNode>
    <siteMapNode title="C语言” description="C语言图书">
    <siteMapNode url="~/WebForm3.aspx" title="C语言程序设计" description="C语言程序设计"/>
    <siteMapNode url="~/WebForm4.aspx" title="C语言课程设计" description="C语言程序设计"/>
    </siteMapNode>
    <siteMapNode title="C++" description="C++图书">
    <siteMapNode url="~/WebForm5.aspx" title="C++语言程序设计" description="C++语言程序设计"/>
    <siteMapNode url="~/WebForm6.aspx" title="C++语言课程设计" description="C++语言课程设计"/>
    </siteMapNode>
    </siteMapNode>
    </siteMapNode>
    </sitaMap>

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

    <div>
            <h4>当前节点</h4>
            <asp:Label ID="Label1" runat="server"/>
            <h4>子节点</h4>
            <asp:Label ID="Label2" runat="server"/>
            <h4>网站地图</h4>
            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"/>
            <asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1"/>
    </div>

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

    try
    {
      string text="";
       Label1.Text=SiteMap.CurrentNode.Title;//显示当前节点的标题
         if(SiteMap.CurrentNode.HasChildNodes)//判断当前节点是否存在子节点
    {
           foreach(SiteMapNode childNodes in SiteMap.CurrentNode.ChildNodes)
    text=text +childNodes.Title+"<br/>";
    }
    Label2.Text=text;
    }
    catch(System.NullReferenceException ex)
    {
       Label1.Text="该节点不在网站地图中";
    }
    catch(Exception ex)
    {
     Label1.Text=e.ToString();
    }
  • 相关阅读:
    (转)sql server 生成树形菜单
    在Sublime Text 3中配置Python3的开发环境/Build System
    按回车键提交表单 问题
    多页面 返回 到同一页面
    sql 查找出表里所有字段
    sql 创建表变量,临时表
    sql语句中数据类型转换函数:CAST 和 Convert
    sql isnull函数
    判断值是否为整数
    TSQL游标使用
  • 原文地址:https://www.cnblogs.com/zzp0320/p/7201153.html
Copyright © 2011-2022 走看看