《Programming ASP.NET》学习笔记(母版页和导航)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

母版页和导航

 

母版页

母版页提供了共享的HTML,控件和代码,他们可以作为一个模板,供网站内所有页面使用,任何母版页中的内容都会在使用该母版页的页面中显示

添加新项,选择“母版页”,添加一个母版页
在新建的母版页中,已经包含asp:contentplaceholder声明:
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>

在contentplaceholder控件中,可以在该控件周围添加任何内容


添加内容页

使用母版页的页面的所有内容,将被放在母版页的contentplaceholder控件的位置
一个母版页可以有多个contentplaceholder控件

可以在添加web窗体的时候选择“选择母版页”,就可以为子页面选择一个母版页
或者在page指令中添加MasterPageFile属性,值为母版页路径
子页面包含一个page指令,但没有html,form,head,body标签,所有子控件内容都显示在相关母版页的contentplaceholder控件的所在区域

例如:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="content1" Runat="Server">
</asp:Content>

子页面的设计视图中将看到母版页的内容,但不能修改,只能在content控件中添加内容

例如:
<asp:Content ID="Content1" ContentPlaceHolderID="content1" Runat="Server">
    <asp:Label ID="Label1" runat="server" Text="show something"></asp:Label>
</asp:Content>

其中ContentPlaceHolderID用于获取或设置与当前内容关联的ContentPlaceHolder控件的ID


使用嵌套母版页

任何网页都可以与嵌套母版页或者原始母版页组合

添加一个新的母版页,把原来的内容删掉,并作如下修改:
<%@ Master Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="MasterPage2.master.cs" Inherits="ASP.NET" %>
<asp:Content runat="server" ID="MasterContent" ContentPlaceHolderID="content1">
    <div>
        <asp:ContentPlaceHolder ID="content2" runat="server">
        </asp:ContentPlaceHolder>
    </div>
</asp:Content>

它把之前的MasterPage.master作为母版页,并在Content控件中添加自己的ContentPlaceHolder控件

但子页面使用嵌套母版页时不能使用设计视图


动态编辑母版页

动态编辑母版页就是通过子页面改变母版页的显示内容
可以在母版页中创建公共属性来实现

例如:
在MasterPage.master.cs中添加一个公共属性
public string Lable
{
    set { this.Label1.Text = value; }
}

对应MasterPage.master中的Lable1
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

在子页面中添加MasterType指令用于创建对母版页的引用
<%@ MasterType TypeName="MasterPage" %>

之后就可以在代码文件中修改母版页的内容
protected void Page_Load(object sender, EventArgs e)
{
    this.Master.Lable = "show something";
}

还有一种使用这个属性的方法是采用后期绑定,但相对较慢
例如:
protected void Page_Load(object sender, EventArgs e)
{
    Label lb = Master.FindControl("Lable1") as Label;
    lb.Text = "show something";
}

 

导航


从站点导航开始

新建一个“站点地图”,是一个.sitemap文件
同时站点地图的框架已经搭建好了

例如:
 <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="" title=""  description="">
        <siteMapNode url="" title=""  description="" />
        <siteMapNode url="" title=""  description="" />
    </siteMapNode>
</siteMap>

title属性定义了链接所要使用的文本
description属性用于定义工具提示

例如:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode title="Programming" description="Contract Programming" url="~/Programming.aspx">
    <siteMapNode title="On-Site" description="On-site" url="~/OnSite.aspx" />
    <siteMapNode title="Off-Site" description="Off-site"  url="~/OffSite.aspx" />
  </siteMapNode>
</siteMap>

站点地图文件包括一个单独的<siteMap>元素,用来定义命名空间:
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

在siteMap元素中只能嵌套一个<siteMapNode>元素,而<siteMapNode>元素中可以嵌套多个<siteMapNode>元素


建立页面

为了使用站点地图,必须先创建一个母版页
并将一个SiteMapDataSource控件放到母版页中
注意:添加到母版页的控件必须置于ContentPlaceHolder控件外,form标签之内
默认情况下,SiteMapDataSource控件将搜索并使用Web.sitemap文件

构建一个健全的导航,须创建网站地图和面包屑

插入一个TreeView控件
点击智能标签,在“选择数据源”中选择刚创建的SiteMapDataSource控件数据源
它将成为一个树形导航控件

插入一个SiteMapPath控件
它将自动生成面包屑,即链接导航

注意:
TreeView控件的节点可以折叠或展开
面包屑通过SiteMapPath控件实现,它将显示如何到达当前页,如何回到首页


定制外观和操作

TreeView控件可以使用“自动套用格式”设置样式
或者通过设置控件属性设置节点样式

TreeView控件方法
方法  说明
CollapseAll 折叠所有树节点
ExpandAll 展开所有树节点
FindNode 检索指定值路径处的TreeNode对象

TreeView控件事件
事件   说明
SelectedNodeChanged 当节点被选中时发生
TreeNodeCheckChanged 当节点的多选框状态被修改时发生
TreeNodeCollapsed 当节点被折叠时发生
TreeNodeExpanded 当节点被展开时发生
TreeNodePopulate 当PopulateOnDemand属性为true的节点展开时发生

SiteMapPath控件也可以使用“自动套用格式”设置样式
或者通过设置控件属性设置节点样式
通过“编辑模板”可以设置NodeTemplate,CurrentNodeTemplate,RootNodeTemplate,PathSeparatorTemplate的样式

其中PathSeparator属性可用于设置用于分隔菜单项路径的字符
ParentLevelsDisplayed属性可用来显示显示节点层数


按需呈现

可以让TreeView按需呈现,即不是一次加载所有节点,而是按需加载显示

首先修改TreeView的标签为非自封闭标签,并添加ExpandDepth属性
ExpandDepth属性获取或设置第一次显示TreeView控件时所展开的层次数

再给TreeView控件添加DataBindings元素,并在该元素中添加TreeNodeBinding控件,并设置DataMember属性来应用树节点绑定的值

例如:
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" ExpandDepth="0">
<DataBindings><asp:TreeNodeBinding DataMember="SiteMapNode" /></DataBindings>
</asp:TreeView>


使用菜单导航

可以使用Menu控件代替TreeView控件
添加一个Menu控件,设置DataSourceID属性为SiteMapDataSource控件的id
例如:
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1">
</asp:Menu>

可以使用Orientation属性设置Menu控件的呈现方向,默认为Vertical


以编程方式遍历站点地图的节点

通过代码可以遍历站点地图的节点
例如:
this.Label1.Text = SiteMap.CurrentNode.Title;

if (SiteMap.CurrentNode.HasChildNodes)
{
    foreach (SiteMapNode childNode in SiteMap.CurrentNode.ChildNodes)
    {
        this.Label2.Text += childNode.Title + "<br/>";
    }
}

其中SiteMap用来呈现网站导航结构,SiteMap对象由站点地图提供程序创建
CurrentNode返回一个SiteMapNode类型的对象,其Title属性返回其标题
HasChildNodes属性返回一个布尔值,表示该节点是否有子节点
并通过ChildNodes属性返回的SiteMapNodeCollection对象遍历子节点

 

基于安全的过滤


启用成员资格


添加角色


添加登录页面


创建访问规则


创建权限驱动的站点地图 

.NET MVC5专题(母版的使用) 1、RenderBody 布局 在Razor引擎中没有“母版”,取而代之的是叫做“布局”的(_Layout.cshtml)放在了共享视图文件夹中。在这个面中,会看到标签里面有这样一条语句: @RenderBody() 其实它的作用母版中的服务器控件类似,当创建基于此布局面的视图时,视图的内容会布局面合并,而新创建视图的内容会通过布局面的@RenderBody()方法呈现在标签... 阅读详情

相关推荐

实验五 1、3ASP.NET主题、母版站点导航.doc

ASP.net实验报告加详细步骤,实验五,ASP.NET主题、母版站点导航,超详细的步骤,有图片有文字

ASP.NET 2.0中操作数据之三:创建母版站点导航

本文主要介绍在ASP.NET如何创建母版以及站点地图等操作,母版的实现的功能有点类似自定义用户控件,可以实现网站面统一的设计布局。

ASP.NET主题、母版站点导航

介绍ASP.NET主题、母版站点导航的基本概念应用

web服务器控件课程报告文档,web服务器控件实验报告.docx

web服务器控件实验报告实验报告  实验报告  题目:服务器控件  院系:计算机科学与工程学院  【实验题目】  服务器控件  【实验目的】  1.熟悉用户控件的使用。  2.熟悉导航控件的使用。  3.掌握母版的使用。  【实验内容】  设计一个个人情况调查程序,程序启动后显示如图所示的面。用户在填写了姓名、选择了性别、喜爱的歌手、居住城市、个人爱好后单击“提交”按钮后,屏幕显示用户填写或选...

weixin_35955473的博客 621

ASP.NET——母版与站点导航

概述:从ASP.NET2.0开始提供了母版功能,它为提高工作效率,降低开发维护强度,提供了有利支持。新建一个母版WebForm1.aspx面添加一个使用母版的Web窗体链接到Site1母版中(如下图)同理我们可以再创建一个母版的Web窗体如果需要两个窗体所达成的效果一样,我们可以在母版中进行设置。访问母版使用FindControl方法获取母版控件引用因为引用母版的窗体是无法编辑的,...

沉默默的编程博客 5662

Contents of Programming ASP.NET 3rd Edition

Programming ASP.NET 3rd Edition的目录初稿,大家可以先睹为快:前言第1章 ASP.NET 2.0第2章 Visual Studio 2005第3章 控件:基本概念第4章 基本控件第5章 高级控件第6章 网站基础第7章 跟踪、调试错误处理第8章 验证第9章 数据访问第10章 ADO.NET第11章 基于表单的安全性第12章 母版导航第13章 个性化第14章 自

I AM ST@N 3108

Programming ASP.NET学习笔记(GridView控件)

GridView控件把数据源控件绑定到一GridView控件上来显示所获取的数据它是ASP.NET中增强的DataGrid控件不从WebControl继承的GridView控件属性属性   说明AllowPaging  是否启用分。默认为falseAllowSorting  是否启用排序。默认为falseAlternatingRowStyle 交替行的样式属性AutoGenerate

cloudgamer的专栏 3646

Programming ASP.NET学习笔记(MultiViewView控件)

MultiViewView控件块是面中某区域的内容,ASP.NET提供了View控件对块进行管理。每个块对应一个View控件,所有View对象包含在MultiView对象中。MultiView中每次只显示一个View对象,这个对象称为活动视图。ViewMultiView控件是从System.Web.UI.Control类继承。MultiView控件有一个类型为ViewCollec

cloudgamer的专栏 1757

Contents of Programming ASP.NET 3rd Edition铪铪铪铪

Programming ASP.NET 3rd Edition的目录初稿,大家可以先睹为快:前言第1章 ASP.NET 2.0第2章 Visual Studio 2005第3章 控件:基本概念第4章 基本控件第5章 高级控件第6章 网站基础第7章 跟踪、调试错误处理第8章 验证第9章 数据访问第10章 ADO.NET第11章 基于表单的安全性第12章 母版导航第13章 个性化第14章 自

.NET博文收藏 403

Programming ASP.NET学习笔记(网站基础)

 网站基础 .aspx文件称为内容文件,包括面的可视化内容以及ASP.NET服务器控件代码隐藏文件包含服务器端代码块当浏览器请求Web服务器中的.aspx文件时如果是第一次访问,将编译此Page类,并被服务器缓存在2.0允许在部署前对Web站点进行编译编译类的名字来自.aspx的文件名如果是默认default.aspx,那么类名是_default其他的类名是此文件

cloudgamer的专栏 1275

ASP.NET样式、主题母版

本章开始讨论ASP.NET面创作技术,现如今的网网站、Web Base应用程序越来越注重面的外观可操作性。一致的外观能给用户良好的印象,并能充份展示企业的形象文化内涵。ASP.NET提供了多种用于统一面外观的方法,主要有: 样式:CSS标准的一部分,样式并不是ASP.NET中才有的技术,但是使用这个技术能够为ASP.NET Web项目提供一致的格式外观。 主题:主题可以为Web服务器控件提供一致的外观设置,与样式属于相同的技术,但主题只针对服务器控件。 母版母版用于定义网站的一致性布局。

Programming ASP.NET学习笔记(Wizard控件)

Wizard控件Wizards控件为用户提供了呈现一连串步骤的基础架构,这样可以访问所有步骤中包含的数据,并方便地进行前后导航。与MultiView控件类似,Wizard包含一个WizardStep对象集合。WizardStep从View类继承,而且WizardStepWizard控件之间的关系与ViewMultiView的关系类似。所有WizardStep中的所有控件都位于面控

cloudgamer的专栏 2032

Programming ASP.NET学习笔记(基本控件)

基本控件 Label 控件使用Label控件可以显示文本Text属性包含要显示的文本字符串 TextBox 控件TextBox控件可以用于用户输入或显示只读文本常用属性属性  说明AutoPostBack 更改控件内容后是否自动回发到服务器Columns  文本框以字符为单位的宽度MaxLength 最多允许的字符数ReadOnly 用户是否不能修改内容(但能以编程方式

cloudgamer的专栏 1567

Programming ASP.NET学习笔记(AdRotator控件)

AdRotator控件该控件从列表中随机显示一个图片,常用于在面上显示广告。这个列表可以是存储在单独的XML文件或数据绑定的数据源中的。无论哪一种,列表都会包含图片的属性、路径及单击图片时链接到的URL。图片将在每次面加载时更改。AdRotator控件的属性事件名称   说明AdvertisementFile 包含广告及广告属性列表的XML路径DataMember  控件将绑定到

cloudgamer的专栏 934

书评 -- Programming Microsoft ASP.NET 2.0 Application Advanced Topics

.NET 2.0 在去年底(2005 年)风光上市,就笔者来看,最大的新增在 Team System 架构,与丰富了 ASP.NET 的开发功能。而对广大的使用者来说,无疑是 ASP.NET 2.0 最让人兴奋。Web 应用程序开发的新ASP.NET 2.0 改良 1.x 版的设计,让 Web 应用程序的开发架构变得更有弹性,例如:l           开发项目(project)以档案

移动开发与培训 231

Programming ASP.NET学习笔记(Calendar控件)

Calendar控件Calendar控件功能:显示一个日历,该日历会显示一个月份允许用户选择日期、周、月允许用户选择一定范围内的日期允许用户移到下一月或上一月以编程方式控件选定日期的显示Calendar最重要的属性名称  说明Caption  显示在日历上方的文本CaptionAlign 指定标题的垂直水平对齐方式CellPadding 边框单元格之间的以像素为单位的间距。默认为2Ce

cloudgamer的专栏 2004

Programming ASP.NET》(中文版)笔记三——第六章:网站基础

面:当浏览器请求Web服务器中的.aspx文件时,服务器将处理该面。如果是Web应用启动后第一次访问此面,那么ASP.NET运行时将编译此的Page类。该类由System.Web.UI.Page派生。经过编译的类中包括所有控件的声明面的组成代码,例如,属性、事件处理程序其他方法。代码隐藏:.aspx.cs 文件 转到另一个面:实现这一功能,共有四种不同方法:超链接、服

j544759698的专栏 399
上一篇: 《Programming ASP.NET》学习笔记(验证)
下一篇: ASP.NET 2.0个性化配置(profile)
cloudgamer
博客等级 码龄20年 456粉丝 158原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值