母版页的详细使用介绍

article/2025/8/16 20:12:46
ASP.NET 母版页概述

 

使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。

母版页的工作原理

母版页实际由两部分组成,即母版页本身与一个或多个内容页。

Note注意

您也可以嵌套母版页。有关详细信息,请参见嵌套的 ASP.NET 母版页。

母版页

母版页为具有扩展名 .master(如 MySite.master)的 ASP.NET 文件,它具有可以包括静态文本、HTML 元素和服务器控件的预定义布局。母版页由特殊的 @ Master 指令识别,该指令替换了用于普通 .aspx 页的 @ Page 指令。该指令类看起来类似下面这样。

Visual Basic
复制代码
<%@ Master Language="VB" %>
C#
复制代码
<%@ Master Language="C#" %>

@ Master 指令可以包含的指令与 @ Control 指令可以包含的指令大多数是相同的。例如,下面的母版页指令包括一个代码隐藏文件的名称并将一个类名称分配给母版页。

Visual Basic
复制代码
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
C#
复制代码
<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

@ Master 指令外,母版页还包含页的所有顶级 HTML 元素,如 htmlheadform。例如,在母版页上可以将一个 HTML 表用于布局、将一个 img 元素用于公司徽标、将静态文本用于版权声明并使用服务器控件创建站点的标准导航。您可以在母版页中使用任何 HTML 元素和 ASP.NET 元素。

可替换内容占位符

除会在所有页上显示的静态文本和控件外,母版页还包括一个或多个 ContentPlaceHolder 控件。这些占位符控件定义可替换内容出现的区域。接着在内容页中定义可替换内容。定义 ContentPlaceHolder 控件后,母版页可能看起来类似于下面这样。

Visual Basic
复制代码
<% @ Master Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html  >
<head runat="server" >
<title>Master page title</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td><asp:contentplaceholder id="Main" runat="server" /></td>
<td><asp:contentplaceholder id="Footer" runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
C#
复制代码
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html  >
<head runat="server" >
<title>Master page title</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td><asp:contentplaceholder id="Main" runat="server" /></td>
<td><asp:contentplaceholder id="Footer" runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>

内容页

通过创建各个内容页来定义母版页的占位符控件的内容,这些内容页为绑定到特定母版页的 ASP.NET 页(.aspx 文件以及可选的代码隐藏文件)。通过包含指向要使用的母版页的 MasterPageFile 属性,在内容页的 @ Page 指令中建立绑定。例如,一个内容页可能包含下面的 @ Page 指令,该指令将该内容页绑定到 Master1.master 页。

Visual Basic
复制代码
<%@ Page Language="VB" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page" %>
C#
复制代码
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%>

在内容页中,通过添加 Content 控件并将这些控件映射到母版页上的 ContentPlaceHolder 控件来创建内容。例如,母版页可能包含名为 MainFooter 的内容占位符。在内容页中,可以创建两个 Content 控件,一个映射到 ContentPlaceHolder 控件 Main,而另一个映射到 ContentPlaceHolder 控件 Footer,如下面的图中所示。

替换占位符内容

MasterPagesMerge 图形

创建 Content 控件后,向这些控件添加文本和控件。在内容页中,Content 控件外的任何内容(除服务器代码的脚本块外)都将导致错误。在 ASP.NET 页中所执行的所有任务都可以在内容页中执行。例如,可以使用服务器控件和数据库查询或其他动态机制来生成 Content 控件的内容。

内容页可能看起来与下面类似。

Visual Basic
复制代码
<% @ Page Language="VB" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
Main content.
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
Footer content.
</asp:content>

[C#]

复制代码
<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
Main content.
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
Footer content.
</asp:content>

@ Page 指令将内容页绑定到特定的母版页,并为要合并到母版页中的页定义标题。注意,内容页包含的所有标记都在 Content 控件中。(母版页必须包含一个具有属性 runat="server"head 元素,以便可以在运行时合并标题设置。)

可以创建多个母版页来为站点的不同部分定义不同的布局,并可以为每个母版页创建一组不同的内容页。

母版页的优点

母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码、文本和控件元素;使用框架集;对通用元素使用包含文件;使用 ASP.NET 用户控件等。母版页具有下面的优点:

  • 使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。

  • 使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。

  • 通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。

  • 母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。

母版页的运行时行为

在运行时,母版页是按照下面的步骤处理的:

  1. 用户通过键入内容页的 URL 来请求某页。

  2. 获取该页后,读取 @ Page 指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。

  3. 包含更新的内容的母版页合并到内容页的控件树中。

  4. 各个 Content 控件的内容合并到母版页中相应的 ContentPlaceHolder 控件中。

  5. 浏览器中呈现得到的合并页。

下面的关系图对此过程进行了阐释。

运行时的母版页

MasterPagesMerge 图形

从用户的角度来看,合并的主控和内容页是一个单独而离散的页。该页的 URL 是内容页的 URL。

从编程的角度来看,这两个页用作其各自控件的独立容器。内容页用作母版页的容器。但是,在内容页中可以从代码中引用公共母版页成员(如下一节中所述)。

注意,母版页成为了内容页的一部分。实际上,母版页与用户控件的作用方式大致相同 -- 作为内容页的一个子级并作为该页中的一个容器。但是在这种情况下,母版页是所有呈现到浏览器中的服务器控件的容器。合并的主控和内容页的控件树看起来类似于下面这样:

复制代码
Page
Master Page
(Master page markup and controls)
ContentPlaceHolder
Content page markup and server controls
(Master page markup and controls)
ContentPlaceHolder
Content page markup and server controls
(Master page markup and controls)

此关系图是简化的;如果内容页不具有相应的 Content 控件,母版页也可能在 ContentPlaceholder 控件中具有标记和控件。

一般说来,此结构对如何构造页或编写页的程序无任何影响。但是在某些情况下,如果在母版页上设置一个页范围的属性,则该属性可能会影响内容页的行为,这是因为母版页是页上控件的最近的父级。例如,如果在内容页上将 EnableViewState 属性设置为 true,而在母版页中将相同的属性设置为 false,实际上会禁用视图状态,因为母版页上的设置具有优先权。

母版页和内容页路径

当请求某个内容页时,其内容与母版页合并,并且该页在内容页的上下文中运行。例如,如果获取 HttpRequest 对象的 CurrentExecutionFilePath 属性,则无论是在内容页代码还是母版页代码中,路径都表示内容页的位置。

母版页和内容页不必位于同一文件夹中。只要内容页的 @ Page 指令中的 MasterPageFile 属性解析为一个 .master 页,ASP.NET 就可以将内容页和母版页合并为一个单独的已呈现的页。

引用外部资源

内容页和母版页都可以包含引用外部资源的控件和元素。例如,两者都可以包含引用图像文件的图像控件,或包含引用其他页的定位点。

合并的内容和母版页的上下文是内容页的上下文。这会影响在定位点上指定资源(如图像文件和目标页)的 URL 的方式。

服务器控件

在母版页上的服务器控件中,ASP.NET 动态修改引用外部资源的属性的 URL。例如,可以将一个 Image 控件放置于一个母版页上并将其 ImageUrl 属性设置为相对于母版页。在运行时,ASP.NET 会修改 URL 以便其在内容页的上下文中正确解析。

ASP.NET 会在下面的情况下修改 URL:

  • URL 为某个 ASP.NET 服务器控件的属性。

  • 该属性在该控件中内部标记为一个 URL。(该属性 (Property) 用属性 (Attribute) UrlPropertyAttribute 来标记。)在实际情况中,采用这种方式标记通常用于引用外部资源的 ASP.NET 服务器控件属性。

其他元素

ASP.NET 无法修改不是服务器控件的元素上的 URL。例如,如果在母版页上使用一个 img 元素并将其 src 属性设置为一个 URL,则 ASP.NET 不会修改该 URL。在这种情况下,URL 会在内容页的上下文中进行解析并创建相应的 URL。

一般说来,在母版页上使用元素时,建议您使用服务器控件,即使是对不需要服务器代码的元素也是如此。例如,不使用 img 元素,而使用 Image 服务器控件。这样,ASP.NET 就可以正确解析 URL,而且您可以避免移动母版页或内容页时可能引发的维护问题。

有关指定 ASP.NET 服务器控件的路径的更多信息,请参见 ASP.NET 网站路径。

母版页与主题

不能直接将 ASP.NET 主题应用于母版页。如果向 @ Master 指令添加一个主题属性,则页在运行时会引发错误。

但是,主题在下面这些情况中会应用于母版页:

  • 如果主题是在内容页中定义的。母版页在内容页的上下文中解析,因此内容页的主题也会应用于母版页。

  • 如果通过在 pages 元素(ASP.NET 设置架构) 元素中包含主题定义来将整个站点配置为使用主题。

有关更多信息,请参见 ASP.NET 主题和外观概述。

限定母版页的范围

可以在三种级别上将内容页附加到母版页:

  • 页级   可以在每个内容页中使用页指令来将内容页绑定到一个母版页,如下面的代码示例中所示。

    Visual Basic
    复制代码
    <%@ Page Language="VB" MasterPageFile="MySite.Master" %> 
    

     

    C#
    复制代码
    <%@ Page Language="C#" MasterPageFile="MySite.Master" %> 
    
  • 应用程序级   通过在应用程序的配置文件 (Web.config) 的 pages 元素中进行设置,可以指定应用程序中的所有 ASP.NET 页(.aspx 文件)都自动绑定到一个母版页。该元素可能看起来类似于下面这样。

    复制代码
    <pages masterPageFile="MySite.Master" />

    如果使用此策略,则应用程序中的所有具有 Content 控件的 ASP.NET 页都与指定的母版页合并。(如果某个 ASP.NET 页不包含 Content 控件,则不应用该母版页。)

  • 文件夹级   此策略类似于应用程序级的绑定,不同的是只需在一个文件夹中的一个 Web.config 文件中进行设置。然后母版页绑定会应用于该文件夹中的 ASP.NET 页。


http://chatgpt.dhexx.cn/article/GnulbUH4.shtml

相关文章

ASP.NET 母版页(嵌套、访问母版页的控件和属性)

文章目录 [toc]一、母版页的嵌套二、访问母版页的控件和属性1、使用Master.FindControl()方法访问母版页上的控件2、引用MasterType指令访问母版页上的属性 友情链接&#xff1a;母版页的概述与创建 一、母版页的嵌套 嵌套就是大的容器套装小的容器。嵌套母版页就是指创建一个…

C# 母版页页面导航

C# 母版页&页面导航 母版页master页面导航站点地图SiteMapDataSource控件TreeView控件Menu控件 ASP.NET常用对象Response对象Request对象ViewState对象Server对象Session对象Cookie对象ApplicationResponse对象 母版页master localhost:50194 第一种情况&#xff1a;在he…

C#母版页

一、母版页的使用 1、概述 母版页为具有扩展名.master的ASP.NET文件&#xff0c;它具有包括静态文本、HTML元素和服务器控件的预定义布局。母版页由特殊的master指令识别&#xff0c;该指令替代普通页面.aspx中的page指令。该指令类看起来类似下面的代码&#xff1a; <% M…

html如何转换为母版页,如何在模板中指定/或取消母版页

很多时候模板中我们需要用到不同的母版页&#xff0c;那么如何在模板中引用不同母版页呢&#xff1f; 方法1、_ViewStart.cshtml中声明&#xff0c;代码如下&#xff1a;{ Layout "_Layout.cshtml"; } 模板Views目录中默认有一个全局的_ViewStart.cshtml文件&#xf…

ASP.NET 母版页

母版页 母版页的功能为提高工作效率、降低开发和维护强度。母版页应用于网站标志、广告条、导航条、版权声明等内容。 创建母版页的步骤&#xff1a; 第一步&#xff1a;打开“Microsoft Visual Studio 2010”程序&#xff0c;选择“文件”—“新建”—“项目”&#xff0c;弹…

asp.net-母版页设计

先引入几个图片&#xff1a; 母版页的.aspx代码如下&#xff1a; <% Master Language"C#" AutoEventWireup"true" CodeFile"A_TEST.master.cs" Inherits"A_TEST" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans…

html中创建母版页,自定义“我的网站”母版页

使用内容占位符控件 母版页和内容页使用一组可替换区域(也称内容占位符控件)协同工作。 每个内容占位符(在页面代码中显示为 ContentPlaceHolder)均表示可在母版页上覆盖的内容。 网站上的任何页面均可通过提供匹配的内容控件替换内容占位符中包含的任何内容。 该内容控件甚至可…

ASP.NET 母版页,内容页之间如何传参数

ASP.NET 母版页,内容页之间如何传参数 绪论:本文介绍如何使用.net 母版页(.master)和内容页(.aspx)相互传参数 母版页传值到内容页 上面可以看见母版页的时间值已经到了内容页上面了&#xff0c;那么让我们一起来看看代码怎么实现的吧&#xff01; 来看看母版页的内容代码 从…

母版页和内容页的使用

虽然母版页和内容页功能强大&#xff0c;但是其创建和应用过程并不复杂。本节和下一节将以创建如图 1 所示示例为例&#xff0c;向读者详细介绍&#xff0c;使用 Visual Stuido 2005 创建母版页和内容页的方法以及相关知识。本节的重点是创建母版页的方法。 母版页中包含的…

VS2012 ASP.NET 母版页的创建与使用

在做牛腩新闻发布系统的过程中,需要使用ASP.NET的母版页来抽出所有网页的公共部分,以便更好的复用自己的网页布局和设计. 首先我们来看如何创建一个新的母版页,如下图所示: 添加之后,如下图所示: 编写完母版页之后,在使用的时候,问题出现了,在新建Web窗体时,右下角没有视频里讲…

ASP.NET母版页

4.2母版页 4.2.1 母版页概述 用户在设计网站时经常会遇到多个网页部分内容相同的情况&#xff0c;例如&#xff1a;具有网关和内容都相同的标题栏、页脚栏、导航栏等&#xff0c;如果每个网页都设计一次&#xff0c;不仅重复劳动而且非常繁琐&#xff0c;此时&#xff0c;使用母…

ASP.NET 母版页(概述、创建)

文章目录 一、母版页概述1、母版页的运行机制2、母版页的优点 二、创建母版页三、创建内容页 一、母版页概述 母版页的主要功能是&#xff1a;创建统一的用户界面和样式。它由一个母版页和&#xff08;多个&#xff09;内容页构成&#xff0c;这些内容页和母版页合并将母版页的…

母版页的使用

一、母版页简介 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页&#xff08;或一组页&#xff09;定义所需的外观和标准行为。 母版之所以称为母版&#xff0c;就是将大部分网页上固定内容&#xff0c;比如导航栏&#xff0c;版权…

Arduino驱动直流电机风扇

时隔多年&#xff0c;重拾Arduino&#xff0c;先拿直流电机风扇找一下手感。配套的东西如下图所示&#xff1a;直流电机、控制板、风扇、架子。   装好之后的效果如下图所示。   本文参照参考文献中的示例代码进行测试。参考文献中的代码主要通过按钮控制风扇的不同转速&…

BLDC无刷直流电机驱动程序

1.先不考虑霍尔信号&#xff0c;先让BLDC动起来&#xff0c;如下图&#xff0c;主要驱动6个MOS管&#xff0c;有两种驱动方式。第一种方式&#xff0c;上下桥臂都给PWM信号&#xff1b;第二种方式&#xff0c;3个PWM信号3个电平信号。 2.霍尔信号接到定时器的输入捕获&#xf…

直流电机驱动实验

直流电机驱动实验 实验现象 本实验采用小型直流电机驱动L9110驱动一个小型直流电机 理论学习 按照上图接线完成后可以对连接在驱动板上的电机经行控制。 A1.A20.0 时为停转 A1.A21.0 时为正转 A1.A20.1 时为反转 PA 为 PWM 波输入 G 为共地引脚 其中PWM频率最高为 60KHZ&a…

大功率双路直流电机驱动板的设计源文件

大功率双路直流电机驱动板的设计源文件&#xff0c;包括原理图、PCB、原理图与PCB器件库、BOM清单、stm32测试源代码。 &#xff08;注意&#xff1a;出售的是设计资料&#xff0c;出售的是资料&#xff0c;不是实际的产品哈&#xff09;&#xff0c;另外可对该图的设计原理&am…

【2022项目复盘】无位置传感器的无刷直流电机驱动设计

目录 概述BLDC发展历史现状未来前景 工作原理BLDC结构六步法 启动方式转子预定位转子的同步加速切入转子正常旋转程序 反电动势检测法硬件设计控制模块最小系统三相逆变器电路及其驱动设计端电压检测电路设计电流采样电路设计 回顾 概述 无位置传感器的无刷直流电机驱动设计是…

STM32 GPIO的配置以及直流电机驱动的实现

GPIO的配置以及直流电机驱动的实现 一、GPIO概述 GPIO&#xff1a;General-purpose input/output 通用型输入输出的简称 功能类似8051的P0—P3&#xff0c;其接脚可以供使用者由程控自由使用&#xff0c;PIN脚依现实考量可作为通用输入&#xff08;GPI&#xff09;或通…

lm298驱动电机c语言程序,机器人教程3:直流电机驱动及L298N模块

这一节我们主要介绍H桥电路,后面的章节我们会专门介绍到PWM调速问题。 3、H桥电路 电机做好后后引出两个极,如图5所示,给两个极能电就能够实现其转动,而改变其电源极性刚可以实现换向。 图5减速电机及电路图 前面我们说过必须要解决驱动力不足和换向问题,设计一般会采用两…