ASP.NET中母版页作用

一是提高代码的复用(把相同的代码抽出来)

二是使整个网站保持一致的风格和样式。

母版页存在就一定要有内容页的存在,否则母版页的存在就没有了意义。

.master

一、添加母版页

在新建的母版页中你会发现自动生成了两个ContentPlaceHolder控件

一个在head区, ID=“head”;

一个在body区,默认ID=“ContentPlaceHolder1”

--这是两个占位符控件,文本位置预留。

二级母版页

母版页是可以嵌套的,即在原母版页的基础上再建立母版页。

嵌套的母版页不会自动生成ContentPlaceHolder 控件,需要手动写入

 一级母版页
<%@ Master Language="C#" MasterPageFile="~/MP1.master" AutoEventWireup="true" CodeFile="MP2.master.cs" Inherits="MP2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content> <%--一级母版页预留的坑--%> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <%--一级母版页预留的坑--%> <div style="width: 30%; float: left; height: 500px; background-color: green;"> 这是一条菜单选项<br />
<br />
这是一条菜单选项<br />
<br />
这是一条菜单选项<br />
<br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div> <div style="width: 70%; float: left; height: 500px; background-color: yellow;"> <asp:ContentPlaceHolder ID="MP2_Content1" runat="server">
</asp:ContentPlaceHolder> <%--二级模板挖的坑,留给后面填--%> </div> <div style="clear: both;"></div> <asp:ContentPlaceHolder ID="mp2_js" runat="server"></asp:ContentPlaceHolder>
</asp:Content>

三、建立使用母版页的Web窗体

在新建web窗体时,选择要套用的母版页

 1、套用一级模板页

在新建的web窗体中有两个Content控件,与一级母版页相对应

<%@ Page Title="" Language="C#" MasterPageFile="~/MP1.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <h1>这是页面1,是我们套母版页出来的页面!!!!</h1> </asp:Content>

2、套用二级母版页

在新建Web窗体中只有一个Content控件,自己挖的那个

<%@ Page Title="" Language="C#" MasterPageFile="~/MP2.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MP2_Content1" Runat="Server">

    <h1>这里是我们套用二级母版页MP2出来的页面啊啊啊!!!!</h1>

</asp:Content>

四、母版页与子页之间数据的传递:

在子页中没有办法从外面访问到母版页的内部

可已写公共方法用调用方法的形式传值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += Button1_Click;
} //点击事件
void Button1_Click(object sender, EventArgs e)
{
string s =TextBox1.Text; //获取文本框的值 Label1.Text = s; MP2 m2 = this.Master as MP2; //获取当前这个页的母版页
m2.aaa(s); //调用这个母版页的方法
}
} 子页

子页

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class MP2 : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{ } public void aaa(string a) //二级母版中的 公共方法
{
TextBox1.Text = a; // 将传进来的值赋到 TextBox1 上 MP1 m1 = this.Master as MP1; //获取当前这个页的母版页
m1.m1_aaa(a); //调用这个网页的母版页的方法
}
} 二级母版页

二级母版

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class MP1 : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{ } public void m1_aaa(string a)
{
TextBox1.Text = a; //方法
} 一级母版页

一级模板

MP1 m1 = this.Master as MP1;   //获取当前这个页的母版页

    子页 —— 二级母版  ——  一级母版     一层层传递

五、母版页公共的外部样式表路径和外部JS文件的路径匹配

css  会自动匹配相应的路径

js   不会自动匹配

<script src="<%=abc() %>"></script>   <%--引用外部的js,(在 form 内)--%>
</form> <%-- 前台引用 --%> --------------------------------------- public string abc()
{
return ResolveClientUrl("js/js1.js");
} <%-- 后台写方法 --%>

引用外部 js 时,可以写一个方法,自动获取正确的路径

return ResolveClientUrl(" 路径 ")

最新文章

  1. 基于easyUI实现组织结构树图形
  2. nova instance出错:&quot;message&quot;: &quot;Proxy error: 502 Read from server failed
  3. 003_关于IntellJ IDE 2016 1. 4的使用
  4. selenium eclipse环境搭建
  5. Qt 学习之路:QSortFilterProxyModel
  6. SVN服务器的本地搭建和使用
  7. 创建成功的Python项目
  8. hyper-v 报错 0x80070569
  9. CodeForces 670E Correct Bracket Sequence Editor
  10. wemall开源商城免费商城系统部分代码(内含代码地址)
  11. python 小白(无编程基础,无计算机基础)的开发之路 day2
  12. lvs-nat 模式-piranha
  13. docker使用方式
  14. linux bash shell:最方便的字符串大小写转换(lowercase/uppercase conversion) (转)
  15. Confluence 6 重新获得附件指南
  16. docker 入门第一步
  17. Java服务端单元测试指南
  18. 每天一个linux命令(3):du命令
  19. POJ 1751 Highways(最小生成树&amp;Prim)题解
  20. Linux系统之路——如何在CentOS7.2安装R和RStudio(Server)

热门文章

  1. vue-cli项目中如何使用锚点
  2. Element &#39;beans&#39; cannot have character [children], because the type&#39;s content type is element-only
  3. python编程实例-收集主机信息
  4. UVA - 11214 Guarding the Chessboard (可重复覆盖,DLX+IDA*)
  5. 开放群组架构TOGAF
  6. Windbg内核调试之一: Vista Boot Config设置
  7. untra edit 显示文件函数列表
  8. AD的差分输入与单端输入
  9. scala 定时器
  10. 讯为开发板的最小LINUX系统烧写及U盘的挂载及卸载