ASP.NET母版页;主要是设置一致界面的页面,在固定的页中进行更新。
如图1-1所示
页头 |
页中(页内容) |
页尾 |
图1-1 母版页
一般网页是固定页头和页尾,只更新页内容,来实现网页的跳转或内容的更新。其实控件iframe 和a 也可以实现这样的功能。
例如:
<iframe name="if"></iframe>//在iframe控件里面更新或跳转不同网页。
<a target="if" href="ww.aspx">跳转</a>//点击“跳转”,就可以将ww.aspx网页内容获取到,添加到name为“if”的控件里。
注意:这里实现页面跳转。则需要添加许多的<a> ,则会导致代码重复,并且效果界面没有母版页好。
母版页和嵌套在母版页中的web窗体对应关系。即注意:“MasterPageFile”。相当于,孩子为大,母亲听话。你有,我改。设母版页(母亲)内容为,表头,表尾,表中(ID命名随意)。当嵌套在母版页的web窗体(孩子)里面有对应的ContentPlaceHolderID 的值为母版页的ID 值时,则显示的内容会改变。例如,下面代码显示结果为:表头 改 表尾(即母亲的值更改了,听了孩子的话 ,将“表中”改为“改”)
母版页:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="myM.master.cs" Inherits="母版页.myM" %>
嵌套在母版页中的web窗体:
<%@ Page Title="" Language="C#" MasterPageFile="~/myM.Master" AutoEventWireup="true" CodeBehind="ww.aspx.cs" Inherits="母版页.ww" %>
母版页
<asp:ContentPlaceHolder ID="head" runat="server">
表头
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
表中
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
表尾
</asp:ContentPlaceHolder>
或
表头
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
表中
</asp:ContentPlaceHolder>
表尾
嵌套在母版页中的web窗体
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
改
</asp:Content>
访问母版页的控件和属性
使用Master.FindControl方法访问母版页上的控件
比如:窗体要获取母版页上某一控件的内容,如下代码。
母版页:
<asp:Label ID="Label1" runat="server" Text="母版页Label控件内容"></asp:Label>
嵌套在母版页中的web窗体:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
嵌套在母版页中的web窗体获取窗体控件内容:
<asp:Label ID="la1" runat="server"></asp:Label>
</asp:Content>
Label tt =(Label)this.Master.FindControl("Label1");//获取母版页Label控件ID为Label1的内容
this.la1.Text = tt.Text;
引用@MasterType指令访问母版页的上的属性
可以在窗体内容页上更改母版页的属性
母版页:
<asp:Label ID="Label1" runat="server" Text="母版页Label控件内容:"></asp:Label>
<%=this.Mvalue%>//将后台的Mvalue赋值在前台界面
public string mvalue = "原值";
public string Mvalue
{
get {return mvalue ;}
set {mvalue=value;}
}
嵌套在母版页中的web窗体:
<%@ MasterType VirtualPath="~/myM.Master" %>(代码头上添加,设置VirtualPath 值为对应的母版页路径。)
Master.Mvalue = "hello !";//后台更改母版页的Mvalue的值。