网站导航

网站导航

-创建网站地图

解决方案资源管理器 - 右击网站的名称 - 单击 “添加新项” - 对话框中
在 “Visual Studio 已安装的模板”- 单击 “网站地图”- 名称为 “Web.sitemap”
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 url="~/PictureView.aspx" title="图片浏览" description="图片浏览"></siteMapNode>
  <siteMapNode url="~/About.aspx" title="个人情况" description="个人情况"></siteMapNode>
  <siteMapNode url="~/Reservation.aspx" title="预订餐厅" description="验证控件"></siteMapNode>
 </siteMapNode>
</siteMap>

siteMapFile 属性
一个与应用程序相关的引用,如 ~/MySiteMap.sitemap一个虚拟路径,如 /Customers/MySiteMap.sitemap

一个相对于当前站点地图文件位置的路径引用,如 Guests/MySiteMap.sitemap
-添加树样式导航菜单

新建 TreeMap.aspx - 并添加到母版页菜单上 -
 工具箱 - 数据 - SiteMapDataSource 控件拖动到页面
工具箱 - 导航 -将 TreeView 控件拖动到页面上

在 TreeView 任务 菜单上,在 选择数据源 框中单击 SiteMapDataSource1
保存页,测试树状导航菜单


可以向应用程序中的每个页添加相同的 SiteMapDataSource 和 TreeView 控件,以便在每个页上都显示导航菜单
可以将导航菜单放置在母版页上,这样导航菜单就会自动出现在每一页中
-显示导航历史记录

打开 TreeMap.aspx - 设计 - 工具箱- 导航-将 SiteMapPath 控件拖到页面上
将光标放置在 SiteMapPath 控件前面 - 按 Enter 创建一个新行 [小节标题]

SiteMapPath 控件显示的所有页名称都是链接,除了最后一个,它表示当前页
通过将 SiteMapPath 控件的 RenderCurrentNodeAsLink 属性设置为 true,您可以将当前节点变为链接

-使用 Menu 控件创建导航菜单

   工具箱 - 导航 -  Menu 控件-到页面上在 Menu 任务 菜单上- 选择数据源 框- NewDataSource
- 配置数据源 – Datasourcename-向导 - 单击网站地图 - 单击 确定
-在母版页中使用网站导航

打开母版页-
选择ContentPlaceHolder控件-按向左键- 按 Enter-在ContentPlaceHolder 控件的前-插入一个空行工具箱中数据- 将SiteMapDataSource 控件-拖至母版页-将其定位在 ContentPlaceHolder 控件上方

单击 SiteMapDataSource 控件,按向右键,然后按 Enter,在 SiteMapDataSource 控件下面插入一个空行
在 表 菜单中,单击 插入表,然后插入一个含有一行两列且宽度为 100% 的表
从工具箱的 导航 组中,将 TreeView 控件拖动到表的左单元格中
TreeView  选择数据源 SiteMapDataSource1
将 SiteMapPath 控件拖动到表的右单元格
在右单元格中,单击空白区域,然后按 Shift+Enter 创建一个新行
将 ContentPlaceholder 控件拖至表的右单元格,并将其定位在 “SiteMapPath”控件下面
--以编程方式枚举站点地图节点
private void Page_Load(object sender,System.EventArgs e)
 {
  try
  {
   string LabelText ="";
   Label_CurrentNode.Text = SiteMap.CurrentNode.Title;
 
   if(SiteMap.CurrentNode.HasChildNodes)
    {
     foreach(SiteMapNode childNodesEnumerator in SiteMap.CurrentNode.ChildNodes)
      {
       LabelText = LabelText + childNodesEnumerator.Title + "<br />;
      }
    }
   Label_ChildNodes.Text = LabelText;
  }
  catch(System.NullReferenceException ex)
    {
      Label_CurrentNode.Text = "The current file is not in the site map.";
    }
  catch(Exception ex)
    {
       Label_CurrentNode.Text = "Generic exception: " + e.ToSting()";
    }
 }

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Enumerating Child Site Map Nodes</title>
 </head>
 <body>
   <form id="Form1" method="post" runat="server">

    <h2>Current Node</h2>
    <asp:Label id="Label_CurrentNode" runat="Server"></asp:Label>

    <h2>Current Node</h2>
    <asp:Label id="Label_ChildNode" runat="Server"></asp:Label> 
    <asp:SiteMapDataSource id="SiteMapDataSource1" runat="server"/>
    <asp:TreeView id="TreeView1" runat="server" dataSourceID="SiteMapDataSource1">
    </asp:TreeView>
   </form>
  </body>
</html>

-Menu 控件

方向 属性可以设置为 垂直 或 水平

-调整 Menu 静态和动态级别

StaticDisplayLevels 属性 设置为 2
-以编程方式控制 ASP.NET 菜单

创建两个协同工作的菜单,它们都绑定到同一个 Web.sitemap 文件
第一个菜单是静态显示的类别菜单。它横跨页的顶部水平显示
第二个菜单水平显示在第一个菜单下面

第二个菜单的内容由第一个菜单中选择的菜单项确定
根据第一个菜单的当前选择,以编程方式调整第二个菜单的网站地图数据源,以便仅显示 Web.sitemap 文件中与选定类别相关的部分
修改 Web.sitemap 文件,使成为三层结构
添加第一个Menu
方向 属性设置为 水平
MaximumDynamicDisplayLevels 设置为 0
确保菜单的任何部分都不会以动态飞出方式出现StaticDisplayLevels 设置为 1
选择数据源 下拉列表中选择 新建数据源
数据源配置向导 中,选择 网站地图
接受默认名称 SiteMapDataSource1
新建数据源

配置第一个数据源

在 Menu 的任务菜单中编辑 MenuItem DataBinding
在 菜单 DataBindings 编辑器 中的 可用数据绑定 下拉列表中,选择 SiteMapNode 然后单击 添加
在 数据绑定属性 下拉列表中,选择 TextField ,然后从下拉菜单中选择 标题
选择 SiteMapDataSource 控件
ShowStartingNode 属性设置为 False
创建第二个菜单
添加第二个Menu
方向 属性设置为 水平
新建数据源
数据源配置向导 中,选择 网站地图
接受默认名称 SiteMapDataSource2
配置第二个数据源

选择 SiteMapDataSource2 并将其 StartingNodeURL 属性设置为 Default.aspx?node=图片浏览
StartingNodeOffset 设置为 -1
ShowStartingNode 设置为 False
添加代码以协调菜单

protected void Menu1_MenuItemClick(object sender,MenuEventArgs e)
{
   switch(e.Item.Value)
   {
     case"图片浏览":
       SiteMapDataSource2.StartingNodeUrl ="~/MenuDemo.aspx?node=图片浏览";
       return;
     case"验证控件":
       SiteMapDataSource2.StartingNodeUrl ="~/MenuDemo.aspx?node=验证控件";
       return;
     case"导航控件":
       SiteMapDataSource2.StartingNodeUrl ="~/MenuDemo.aspx?node=导航控件";
       return;
   }
}

 

posted @ 2012-04-20 17:57  珍爱贝贝1314  阅读(609)  评论(0编辑  收藏  举报