ASP.NET中母版页作用

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

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

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

.master

一、添加母版页

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

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

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

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

二级母版页

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

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

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MP1.master.cs" Inherits="MP1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="css/css1.css" rel="stylesheet" /> <asp:ContentPlaceHolder ID="head" runat="server"><%--文本位置预留--%>
</asp:ContentPlaceHolder> </head>
<body>
<form id="form1" runat="server">
<div> <div class="header">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <%--标题栏布局--%>
</div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"><%--文本位置预留--%>
</asp:ContentPlaceHolder> <div class="footer"></div> <%-- 结尾栏布局--%> </div> <script src="<%=abc() %>"></script> <%--引用外部的js,(在 form 内)--%>
</form>
</body>
</html>

一级母版页

<%@ 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. 20145320《Java程序设计》第3周学习总结
  2. Excel_常用快捷键
  3. 腾讯sdk学到了
  4. 转:C#精髓 第四讲 GridView 72般绝技
  5. C#将数据以XML格式写入Excel
  6. android 导航布局
  7. DB操作用法总结。
  8. Asp.net Mvc4默认权限详细(上)
  9. HDU2256(矩阵)
  10. eclipse常用快捷键和插件
  11. python的requests快速上手、高级用法和身份认证
  12. Linux内核分析-两种方式使用同一个系统调用
  13. JavaScript Math Object 数字
  14. VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
  15. git 码云 使用记录
  16. IP windows相关
  17. Tensorflow方法介绍
  18. Java中Collections的binarySearch方法
  19. Spring里通过注解开启事物
  20. django modelform中的self.instance

热门文章

  1. 学习Acegi应用到实际项目中(3)
  2. UVa 11728 Alternate Task (枚举)
  3. 20155326刘美岑 Exp6 信息收集与漏洞扫描
  4. Codeforces Round #512 (Div. 2) D. Vasya and Triangle
  5. 带权单源最短路[稀疏图](Dijkstra)
  6. tomcat虚拟目录配置
  7. Typescript 学习笔记二:数据类型
  8. Liferay的一些应用领域
  9. SSM工作流程的大致理解
  10. 在浏览器中输入www.baidu.com后执行的全部过程