一、母版页概述
母版页的主要功能是:创建统一的用户界面和样式。它由一个母版页
和(多个)内容页
构成,这些内容页和母版页合并将母版页的布局与内容页的内容组合在一起输出。
它可以简化以往重复设计每个Web
页面的工作。母版页中承载了网站的统一内容和设计风格。
母版页
是具有扩展名.master
的文件,它包含静态文本、HTML元素和服务器控件的预定义布局。母版页由特殊的@Master
识别,该指令替换了普通.aspx
页面的@Page
指令。
内容页
包含页面中的非公共内容。通过创建各个内容页来定义母版页的占位符控件的内容,这些内容页是绑定到特定母版页的ASP.NET
页(.aspx
文件以及可选的代码隐藏文件)中。
使用母版页,必须首先创建母版页再创建内容页。
1、母版页的运行机制
在运行的时候,母版页按照下面的步骤处理:
- (1)通过输入内容页的URL来请求某页
- (2)获取之后,读取该页的
@Page
指令。如果该指令引用一个母版页,则读取该母版页。如果是第一次请求这两个页,则两个页都要进行编译。 - (3)包含更新内容的母版页合并到内容页的控件树中。
- (4)各个
Content
控件的内容合并到母版页相应的ContentPlaceHolder
控件中。 - (5)浏览器中呈现得到的合并页。
2、母版页的优点
- 集中处理页的通用功能
- 方便的创建一组公共控件和代码,并将其应用于网站中所有引用该母版页的网页
- 通过控制母版页中的
ContentPlaceHolder
占位符对网页进行布局 - 由内容页和母版页组成的对象模型,能够为应用程序提供一种高效、易用的实现方式,并且这种对象模型的执行效率比以前的处理方式有了很大的提高
二、创建母版页
打开VS2017,新建一个ASP.NET Web应用程序
点击确定,创建一个空的Web窗体
。然后如下图所示:
点击完新建项
之后会弹出来的一个对话框:
朝下滑,选择Web窗体母版页
完成创建。
扫描二维码关注公众号,回复:
8486742 查看本文章
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Text.Site1" %>
<!DOCTYPE html>
<html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
以上是母版页创建后的.Master
代码,其中ContentPlaceHolder
控件为占位符控件,它所定义的位置可替换内容出现的区域。
母版页中可以包含一个或多个
ContentPlaceHolder
控件
三、创建内容页
创建完母版页后就要创建内容页了,创建内容页的步骤与上面类似,在新建项
打开后,选择包含母版页的Web窗体
,点击添加后会出现:
点击确定
就可以了!
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Text.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>
这是创建内容页后出来的代码,可以看到在母版页包含了两个ContentPlaceHolder
控件,在内容页同样也包含了两个Content
控件,说明内容页中的Content
控件对应着母版页中的ContentPlaceHolder
控件。