ASP.NET - SiteMapPath Web 服务器控件概述

ASP.Net高级:SiteMapPath、TreeView 了解SiteMapPath控件,SiteMapPath数据来自站点地图文件   注意: 只有在站点地图中列出的页才能在 SiteMapPath 控件中显示导航数据。如果将 SiteMapPath 控件放置在站点地图中未列出的页上,该控件将不会向客户端显示任何信息。   例题: 用到的动态网页: 在每一个页子上添加一个SiteMapPath控件,添加一个Web.sitemap站点地 阅读详情

SiteMapPath 控件包含来自站点地图的导航数据。此数据包括有关网站中的页的信息,如 URL、标题、说明和导航层次结构中的位置。若将导航数据存储在一个地方,则可以更方便地在网站的导航菜单中添加和删除项。

 

下面的代码示例演示包含在 Web.sitemap 文件中的站点地图数据。

<siteMap>

  <siteMapNode title="Home" description="Home" url="~/default.aspx" >

    <siteMapNode title="Services" description="Services we offer"

      url="~/Services.aspx">

    <siteMapNode title="Training" description="Training classes"

      url="~/Training.aspx" />

    <siteMapNode title="Consulting" description="Consulting services"

      url="~/Consulting.aspx" />

    </siteMapNode>

  </siteMapNode>

</siteMap>

      说明: 只有在站点地图中列出的页才能在 SiteMapPath 控件中显示导航数据。如果将 SiteMapPath 控件放置在站点地图中未列出的页上,该控件将不会向客户端显示任何信息。

 

通过添加下面的代码,可以向 Training.aspx 页添加 SiteMapPath 控件。

<asp:SiteMapPath ID="SiteMapPath1" Runat="server"></asp:SiteMapPath>

 

      当在浏览器中查看 Training.aspx 页时,SiteMapPath 控件将显示如下类似信息,并以超链接的形式呈现“主页”和“服务”:

        主页 > 服务 > 培训

使用 SiteMapPath 控件无需代码和绑定数据就能创建站点导航。此控件可自动读取和呈现站点地图信息。但如果需要,您也可以使用 SiteMapPath 控件来更改站点地图数据。有关更多信息,请参见如何:以编程方式修改内存中的站点地图节点。

SiteMapPath 控件使用户能够向后导航 -- 从当前页到站点层次结构中更高层的页。但是,SiteMapPath 控件不让用户向前导航 -- 从当前页到站点层次结构中较低层的页。例如,可以在新闻组或者留言板应用程序中使用 SiteMapPath 控件,使用户能查看当前浏览的文章的路径。

 

一、SiteMapPath 类

      SiteMapPath 控件是一种站点导航控件,反映 SiteMap 对象提供的数据。它提供了一种用于轻松定位站点的节省空间方式,用作当前显示页在站点中位置的引用点。此种类型的控件通常称为面包屑或眉毛,因为它显示了超链接页名称的分层路径,从而提供了从当前位置沿页层次结构向上的跳转。SiteMapDataSource。SiteMapPath 对于分层页结构较深的站点很有用,在此类站点中 TreeView 或 Menu 可能需要较多的页空间。

SiteMapPath 控件直接使用网站的站点地图数据。如果将其用在未在站点地图中表示的页面上,则其不会显示。有关站点地图的更多信息,请参见 ASP.NET 站点导航概述。

SiteMapPath 由节点组成。路径中的每个元素均称为节点,用 SiteMapNodeItem对象表示。锚定路径并表示分层树的根的节点称为根节点。表示当前显示页的节点称为当前节点。当前节点与根节点之间的任何其他节点都为父节点。下表描述了三种不同的节点类型。

节点类型

说明

根节点

锚定节点分层组的节点。

父节点

有一个或多个子节点但不是当前节点的节点。

当前节点

表示当前显示页的节点。

      SiteMapPath 显示的每个节点都是 HyperLink 或 Literal 控件,您可以将模板或样式应用到这两种控件。对节点应用模板和样式需遵循两个优先级规则:

·如果为节点定义了模板,它会重写为节点定义的样式。

·特定于节点类型的模板和样式会重写为所有节点定义的常规模板和样式。

 

      NodeStyle 和 NodeTemplate 属性适用于所有节点,而不考虑节点类型。如果同时定义了这两个属性,将优先使用 NodeTemplate。

CurrentNodeTemplate 和 CurrentNodeStyle 属性适用于表示当前显示页的节点。如果除了 CurrentNodeTemplate 外,还定义了 NodeTemplate,则将忽略它。如果除了CurrentNodeStyle 外,还定义了 NodeStyle,则它将与 CurrentNodeStyle 合并,从而创建合并样式。此合并样式使用 CurrentNodeStyle 的所有元素,以及 NodeStyle 中不与CurrentNodeStyle 冲突的任何附加元素。

RootNodeTemplate 和 RootNodeStyle 属性适用于表示站点导航层次结构根的节点。如果除了 RootNodeTemplate 外,还定义了 NodeTemplate,则将忽略它。如果除了 RootNodeStyle 外,还定义了 NodeStyle,则它将与 RootNodeStyle 合并,从而创建合并样式。此合并样式使用 RootNodeStyle 的所有元素,以及 NodeStyle 中不与CurrentNodeStyle 冲突的任何附加元素。最后,如果当前显示页是该站点的根页,将使用 RootNodeTemplate 和 RootNodeStyle,而不是 CurrentNodeTemplate 或CurrentNodeStyle。

      SiteMapPath 控件将由 SiteMapProvider 属性标识的站点地图提供程序用作站点导航信息的数据源。如果未指定提供程序,它将使用站点的默认提供程序,此提供程序由 SiteMap..::.Provider 属性标识。通常,这是 ASP.NET 默认站点地图提供程序(即 XmlSiteMapProvider)的一个实例。如果在站点内使用了 SiteMapPath 控件,但未配置站点地图提供程序,该控件将引发 HttpException 异常。

SiteMapPath 控件还提供多个您可以对其进行编程的事件。这使您可以在每次发生事件时都运行一个自定义例程。下表列出了 SiteMapPath 控件支持的事件。

事件

说明

ItemCreated

SiteMapPath 控件先创建一个 SiteMapNodeItem,然后将其与 SiteMapNode 关联时发生。

ItemDataBound

将 SiteMapNodeItem 绑定到 SiteMapNode 包含的站点地图数据时发生。

      派生自 SiteMapPath 的类会重写 InitializeItem 方法,以自定义导航控件包含的SiteMapNodeItem 控件。为了完全控制 SiteMapNodeItem 对象的创建方式以及将其添加到 SiteMapPath 的方式,派生类会重写 CreateControlHierarchy 方法。

 

示例

下面的代码示例在 Web 窗体页中以声明方式使用了 SiteMapPath 控件。此示例演示一些优先级规则,这些规则控制了将模板和样式应用到 SiteMapPath 节点的顺序。

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<script runat="server">

</script>

 

<html  >

    <head runat="server">

    <title>ASP.NET Example</title>

</head>

<body>

        <form id="form1" runat="server">

 

            <!-- The following example demonstrates some of the orders

                 of precedence when applying styles and templates to

                 functional nodes of a SiteMapPath.

 

                 The NodeStyle and RootNodeStyle define the same attributes,

                 but are different and conflict with each other: the

                 RootNodeStyle supersedes NodeStyle, and is the style

                 rendered. Notice, however, that the underline style

                 defined by NodeStyle is still applied.

 

                 Both a CurrentNodeStyle and a CurrentNodeTemplate are

                 defined. A template supersedes a style for a node

                 type, so CurrentNodeTemplate is displayed and CurrentNodeStyle

                 is ignored. -->

 

            <asp:SiteMapPath ID="SiteMapPath1" runat="server"

                RenderCurrentNodeAsLink="true"

                NodeStyle-Font-Names="Franklin Gothic Medium"

                NodeStyle-Font-Underline="true"

                NodeStyle-Font-Bold="true"

                RootNodeStyle-Font-Names="Symbol"

                RootNodeStyle-Font-Bold="false"

                CurrentNodeStyle-Font-Names="Verdana"

                CurrentNodeStyle-Font-Size="10pt"

                CurrentNodeStyle-Font-Bold="true"

                CurrentNodeStyle-ForeColor="red"

                CurrentNodeStyle-Font-Underline="false">

                <CURRENTNODETEMPLATE>

                        <asp:Image id="Image1" runat="server" ImageUrl="WebForm2.jpg" AlternateText="WebForm2"/>

                </CURRENTNODETEMPLATE>

            </asp:SiteMapPath>

 

 

        </form>

    </body>

</html>

 

上一个示例使用了默认的站点地图提供程序,以及具有如下结构的 Web.sitemap 文件。

<siteMap>

  <siteMapNode title="WebForm1" description="WebForm1" url="WebForm1.aspx" >

    <siteMapNode title="WebForm2" description="WebForm2" url="WebForm2.aspx"/>

  </siteMapNode>

</siteMap>

 

      下面的代码示例演示如何通过重写 InitializeItem 方法,扩展 SiteMapPath 控件并向其添加新功能。DropDownSiteMapPath 控件在当前节点后添加一个 DropDownList,使得定位到当前页的子节点页面变得容易。此示例演示如何在创建项后使用SiteMapNodeItem 对象,包括检查它们的 SiteMapNodeItemType 及调用 OnItemCreated方法。

using System;

using System.Collections;

using System.ComponentModel;

using System.Security.Permissions;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

 

// The DropDownNavigationPath is a class that extends the SiteMapPath

// control and renders a DropDownList after the CurrentNode. The

// DropDownList displays a list of pages found further down the site map

// hierarchy from the current one. Selecting an item in the DropDownList

// redirects to that page.

//

// For simplicity, the DropDownNavigationPath assumes the

// RootToCurrent PathDirection, and does not apply styles

// or templates the current node.

//

[AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]

public class DropDownNavigationPath : SiteMapPath {

    // Override the InitializeItem method to add a PathSeparator

    // and DropDownList to the current node.

    protected override void InitializeItem(SiteMapNodeItem item) {

 

        // The only node that must be handled is the CurrentNode.

        if (item.ItemType == SiteMapNodeItemType.Current)

        {

            HyperLink hLink = new HyperLink();

 

            // No Theming for the HyperLink.

            hLink.EnableTheming = false;

            // Enable the link of the SiteMapPath is enabled.

            hLink.Enabled = this.Enabled;

 

            // Set the properties of the HyperLink to

            // match those of the corresponding SiteMapNode.

            hLink.NavigateUrl = item.SiteMapNode.Url;

            hLink.Text        = item.SiteMapNode.Title;

            if (ShowToolTips) {

                hLink.ToolTip = item.SiteMapNode.Description;

            }

 

            // Apply styles or templates to the HyperLink here.

            // ...

            // ...

 

            // Add the item to the Controls collection.

            item.Controls.Add(hLink);

 

            AddDropDownListAfterCurrentNode(item);

        }

        else {

            base.InitializeItem(item);

        }

    }

    private void AddDropDownListAfterCurrentNode(SiteMapNodeItem item) {

 

        SiteMapNodeCollection childNodes = item.SiteMapNode.ChildNodes;

 

        // Only do this work if there are child nodes.

        if (childNodes != null) {

 

            // Add another PathSeparator after the CurrentNode.

            SiteMapNodeItem finalSeparator =

                new SiteMapNodeItem(item.ItemIndex,

                                    SiteMapNodeItemType.PathSeparator);

 

            SiteMapNodeItemEventArgs eventArgs =

                new SiteMapNodeItemEventArgs(finalSeparator);

 

            InitializeItem(finalSeparator);

            // Call OnItemCreated every time a SiteMapNodeItem is

            // created and initialized.

            OnItemCreated(eventArgs);

 

            // The pathSeparator does not bind to any SiteMapNode, so

            // do not call DataBind on the SiteMapNodeItem.

            item.Controls.Add(finalSeparator);

 

            // Create a DropDownList and populate it with the children of the

            // CurrentNode. There are no styles or templates that are applied

            // to the DropDownList control. If OnSelectedIndexChanged is raised,

            // the event handler redirects to the page selected.

            // The CurrentNode has child nodes.

            DropDownList ddList = new DropDownList();

            ddList.AutoPostBack = true;

 

            ddList.SelectedIndexChanged += new EventHandler(this.DropDownNavPathEventHandler);

 

            // Add a ListItem to the DropDownList for every node in the

            // SiteMapNodes collection.

            foreach (SiteMapNode node in childNodes) {

                ddList.Items.Add(new ListItem(node.Title, node.Url));

            }

 

            item.Controls.Add(ddList);

        }

    }

 

    // The sender is the DropDownList.

    private void DropDownNavPathEventHandler(object sender,EventArgs e) {

        DropDownList ddL = sender as DropDownList;

 

        // Redirect to the page the user chose.

        if (Context != null)

            Context.Response.Redirect(ddL.SelectedValue);

    }

}

【ASP.NET】第五课——搭建风格统一的Web站点、母版页和内容页的使用、站点地图、用户控件的使用 知识点:理解母版页的作用、掌握创建母版页和内容页的方法、掌握常用的导航控件用法、掌握用户控件的用法 本课将讲解 ASP.NET 中的母版页、导航控件(TreeView 和 SiteMapPath)和用户控件。这些 知识点的共性是提升代码和用户界面的重用性,保证用户操作和界面具有统一的风格。母版页是 页面的模板,提供了网站的统一布局。利用 TreeView 和 SiteMapPath 控件简化了站点导航的开 发。用户控件将多个 Web 服务器控件、标签和相关代码组合成一个整体,形成新的... 阅读详情

相关推荐

ASP.NET SiteMapPath控件应用实例详解

在 ASP.NET 导航体系中,文件是整个站点地图功能的基石。它以 XML 格式组织网站页面的层级结构,并通过标准语法描述每个页面之间的父子关系、访问路径以及元数据信息。SiteMapPath 控件正是基于该文件自动生成面包屑导航路径的核心依据。理解的结构设计与节点语义,不仅有助于构建清晰的用户导航链,还能为后续实现权限控制、动态扩展和 SEO 优化打下坚实基础。标准支持titleurlroles等属性,但对于复杂业务场景(如多语言、图标标识、内容版本控制)显得不足。

weixin_33245447的博客 846

ASP.NET中使用SiteMapPath实现面包屑导航功能

一、新建站点地图文件Web.sitemap 站点地图文件的名称必须是Web.sitemap,不能修改,要放于应用程序的根目录下(我这里放在admin下,则在url地址上“admin/”,见第三点) 二、站点文件打开 节点说明: 为根节点,一个站点地图只能有一个元素 下一级有且只有一个节点,对应页面的节点,一个节点描述一个页面 下面包含多个新的节点 节点下: url:用于设置节点导航的URL地址...

weixin_44195690的博客 880

详细SiteMapPath控件的模板使用方法

详细SiteMapPath控件的模板使用方法

asp.net 站点导航(SiteMapPath)的配置与使用

1. 首先在webConfig中配置SiteMapPath的配置节点信息 <add name="XmlSiteMapProvider" description="SiteMap provider wh

King-Bond's Space 1936

c#生成站点地图(SiteMapPath)文件示例程序

代码如下://创建站点地图        private void CreateSiteMap(DataSet ds)        {             XmlDeclaration declareation;            declareation = xmlDoc.CreateXmlDeclaration(“1.0”, “UTF-8”, null);            xmlDoc.AppendChild(declareation);             XmlElement xeRoot = xmlDoc.CreateElement(“siteMap”);    

clumsy一款模拟弱网的工具

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果。

klb5555的专栏 2551

站点地图SiteMapPath的使用 详细步骤分享

1、右键解决方案-添加-新建项-站点地图,名为Web.sitemap 2、输入以下信息: <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="index" title="主页" description=""> <!--这是第一个分类-->

大米的博客 1342

三个原则判定电源环路稳定性

环路稳定性测试接线图如图2所示,将信号电阻(Inserted Resistor )接入电源的环路控制电路中,注入一特定幅度和频率范围的扫频干扰信号(OUT),当干扰信号达到一定的幅度时,环路系统便对干扰信号有所响应,然后使用频率响应分析仪对电源环路输出端(CH2)和电源环路干扰信号注入端(CH1)同时进行比值跟踪测量,则可以得出频率与增益和相位的关系曲线图——波特曲线图(Bode Plot Graph),如图1所示。相位裕度,增益裕度,穿越频率,如图(波特图)所示。相位容限即相位裕度,增益容限即增益裕度。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3737

SiteMapPath Web 服务器控件

SiteMapPath 控件显示一个导航路径(也称为 breadcrumb 或 eyebrow),它以路径形式显示当前页面返回到网站主页的链接。在某一 ASP.NET 页上,SiteMapPath 控件显示类似于以下的内容:主页 > 服务 > 培训TreeView 和 Menu 控件也呈现站点地图数据,它们与 SiteMapPath 控件类似,可以像大多数其他 Web 控件一样进行自定义。

紫藤阁 1597

CentOS7安装openGauss5.0.2LTS版本

该文档要根据自己的实际情况调整ip地址。要根据自己的实际网卡调整。

superhanyubo的专栏 2578

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

qq_45834835的博客 2604

ASP.NET - SiteMapDataSource Web 服务器控件概述

      SiteMapDataSource Web 服务器控件从站点地图提供程序中检索导航数据,然后将数据传递给可显示该数据的控件,如 TreeView 和 Menu 控件。说明: SiteMap 控件也显示导航数据,但该控件不需要绑定到 SiteMapDataSource 控件。SiteMapDataSource 控件包含来自站点地图的导航数据。此数据包括有关网站中的页的信息,如

dodream的专栏 1417

Roboguide与TIA V16通讯

Roboguide与TIA V16通讯

haier123888的博客 2674

ASP.NET - 如何:自定义 SiteMapPath Web 服务器控件的外观

      您可以通过设置站点导航控件的属性或为该控件配置适用的模板,自定义该控件的可视外观。模板和样式根据 SiteMapPath 的“备注”部分中介绍的两个优先级规则应用于链接。此外,您也可以将主题或控件外观应用于控件,还可以开发符合您的呈现需要的自定义站点导航控件。SiteMapPath 控件显示一个导航路径(也称为 breadcrumb 或 eyebrow),它以路径形式显示当

dodream的专栏 1479

槽型光电开关传感器原理图设计,已量产(光电传感器)

在嵌入式设备的位置限位、物料计数等场景中,槽型光电开关是性价比极高的传感器方案 —— 它通过遮挡发射器与接收器之间的光路实现电平切换,电路简单且抗干扰性优于漫反射式光耦。今天分享一个实际项目中落地的槽型光电开关检测电路,从器件选型到逻辑设计都做了简化适配,适合小批量原型或低成本产品的需求。

不脱发的程序猿 718

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3596

VS2005 Web服务器控件概述

ImageMap Web 服务器控件概述利用 ASP.NET ImageMap 控件可以创建一个图像,该图像包含许多用户可以单击的区域,这些区域称为作用点。每一个作用点都可以是一个单独的超链接或回发事件。ImageMap 元素ImageMap 控件主要由两个部分组成。第一个是图像,它可是任何标准 Web 图形格式的图形,如 .gif、.jpg 或 .png 文件。第二个元素是作用点控件的集合。每个

奥法鱼 4728

华为OD机试真题 新系统 2026-09-26 Java&Go&C【数据中心最佳维护时间窗】

数据中心使用一个整数数组 scores,记录 N 小时内每小时的服务器得分(可正可负)。0 表示服务器故障(无效小时)。

MISAYAONE的博客 98

.NET程序设计 实验名称 实验六 ASP.NET服务器控件

计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验六 ASP.NET服务器控件 1.熟悉用户控件的使用。 2.熟悉导航控件的使用。 3.掌握母版页的使用。 二.实验内容: 本实验将通过创建一个模拟的“淘宝商城”网站,使同学们熟悉、练习和掌握用户控件、导航控件及母版页的创建和使用。该网站各页的效果图6-1、6-2、6-3、6-4所示。在设计页面之前,首先根据效果图分析得到框架结构代码,并利用PhotoShop工具,剪切下需要的图片,并保存。 图6-1 首页效果图 图6-2 潮流服饰页面效果图

素有暖夏 1586

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ASP.NET(四)Web开发——其它基础知识

对于ASP.NET开发web软件,前边已经讲了它的内置对象,常用控件,这篇博客总结一下剩余的一些基础知识,从下边几个方面简单总结一下:         一,先看母版页相关知识:          1,概述:使用ASP.NET母版页可以为应用程序中的页创建一致的布局。 单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。 然后可以创建包含要显示的内

学会改变自己——才能突破 3833

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ASP.NET Web Forms - 导航

ASP.NET 带有内建的导航控件。

m0_65541699的博客 1120

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ASP.NET Web Forms – 导航简介

网站导航维护大型网站的菜单是困难而且费时的。在 ASP.NET 中,菜单可存储在文件中,这样易于维护。文件通常名为 web.sitemap,并且被存放在网站的根目录下。此外,ASP.NET 有三个心的导航控件:Sitemap 文件在本教程中,使用下面的 sitemap 文件: <?xml version="1.0" encoding="ISO-8859-1" ?> <siteMap> <siteMapNode title="Ho

Free雅轩的博客 378
上一篇: Response.Clear(),Response.ClearContent(),Response.ClearHeaders()
下一篇: 用 SiteMapPath 节约你的时间
mywebstudy
博客等级 码龄15年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值