一、母版页概述
母版页的主要功能是:创建统一的用户界面和样式。它由一个母版页和(多个)内容页构成,这些内容页和母版页合并将母版页的布局与内容页的内容组合在一起输出。
它可以简化以往重复设计每个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窗体母版页完成创建。 - <%@ 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控件。
来源:https://blog.csdn.net/lesileqin/article/details/103644400 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |