温故知新ASP.NET 2.0(C#)(1) – MasterPage(母版页)

[索引页]
[源码下载]

温故知新ASP.NET 2.0(C#)(1) – MasterPage(母版页)

作者:webabcd

介绍
母版页(MasterPage)就相当给模板页,挺简单的,没什么好说的。基于母版页的常用之效应有:母版页与情节页里信息的传递,在情节页中因故FindControl方法找到内容页中的控件等。另外,母版页是可以嵌套的。

关键
于内容页的头颅加上母版页的强类型引用

图片 1图片 2<%图片 3–创建对母版页的强类型引用,并指定到母版页的杜撰路径–%>
图片 4图片 5<%图片 6@ MasterType VirtualPath=”~/MasterPage/MasterPage.master” %>

1、内容页传递数据到母版页 –
母版页创建一个公艺术,然后内容页通过“Master.方法”来调用这个公共措施

2、母版页传递数据到情页 –
母版页创建一个公家事件来传递数据,然后内容页处理是事件

3、内容页中之所以FindControl方法找到内容页中之控件 –
用“Master.FindControl(“ContentPlaceHolder1”).FindControl(“你要是找的控件ID”)”来找

4、嵌套母版页 – 说起来累,看源码吧

示例
主母板页
Site.master

图片 7图片 8<%图片 9@ Master Language=”C#” AutoEventWireup=”true” CodeFile=”Site.master.cs” Inherits=”Site” %>
图片 10<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
图片 11<head id=”Head1″ runat=”server”>
图片 12    <title>重新过同样整个ASP.NET 2.0(C#)</title>
图片 13</head>
图片 14<body>
图片 15    <form id=”form1″ runat=”server”>
图片 16        <div>
图片 17            <asp:ContentPlaceHolder ID=”ContentPlaceHolder1″ runat=”server”>
图片 18            </asp:ContentPlaceHolder>
图片 19        </div>
图片 20    </form>
图片 21</body>
图片 22</html>
图片 23

次母板页
MasterPage/MasterPage.master

图片 24图片 25<%图片 26@ Master Language=”C#” MasterPageFile=”~/Site.master” AutoEventWireup=”true”
图片 27    CodeFile=”MasterPage.master.cs” Inherits=”MasterPage_MasterPage” %>
图片 28<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”Server”>
图片 29    <p>
图片 30        我是一个嵌套母版页
图片 31    </p>
图片 32    <p>
图片 33        母版页中的情节
图片 34        <asp:DropDownList ID=”ddlMaster” runat=”server” DataSourceID=”XmlDataSource1″ DataTextField=”text”
图片 35            DataValueField=”value” AutoPostBack=”True” OnSelectedIndexChanged=”ddlMaster_SelectedIndexChanged”>
图片 36        </asp:DropDownList><asp:XmlDataSource ID=”XmlDataSource1″ runat=”server” DataFile=”~/Config/DropDownListData.xml”>
图片 37        </asp:XmlDataSource>
图片 38    </p>
图片 39    <p>
图片 40        内容页中的情
图片 41        <asp:ContentPlaceHolder ID=”cph” runat=”Server” />
图片 42    </p>
图片 43</asp:Content>
图片 44

MasterPage/MasterPage.master.cs

图片 45using System;
图片 46using System.Data;
图片 47using System.Configuration;
图片 48using System.Collections;
图片 49using System.Web;
图片 50using System.Web.Security;
图片 51using System.Web.UI;
图片 52using System.Web.UI.WebControls;
图片 53using System.Web.UI.WebControls.WebParts;
图片 54using System.Web.UI.HtmlControls;
图片 55
图片 56public partial class MasterPage_MasterPage : System.Web.UI.MasterPage
图片 57图片 58图片 59{
图片 60    protected void Page_Load(object sender, EventArgs e)
图片 61图片 62    图片 63{
图片 64
图片 65    }
图片 66
图片 67图片 68    /**//// <summary>
图片 69    /// 设置ddlMaster的当选索引
图片 70    /// 这个办法由内容页调用
图片 71    /// </summary>
图片 72    /// <param name=”index”></param>
图片 73    public void SetddlMaster(int index)
图片 74图片 75    图片 76{
图片 77        ddlMaster.SelectedIndex = index;
图片 78    }
图片 79
图片 80    protected void ddlMaster_SelectedIndexChanged(object sender, EventArgs e)
图片 81图片 82    图片 83{
图片 84        // ddlMaster的入选索引改变后,激发SelectedIndexChanged_ddlMaster事件
图片 85        SelectedIndexChanged_ddlMaster(this, new CommandEventArgs(ddlMaster.SelectedItem.Text, ddlMaster.SelectedValue));
图片 86    }
图片 87
图片 88    // 声明一个公家时间事件,让内容页用
图片 89    public event CommandEventHandler SelectedIndexChanged_ddlMaster;
图片 90}
图片 91

内容页
MasterPage/Test.aspx

图片 92图片 93<%图片 94@ Page Language=”C#” MasterPageFile=”~/MasterPage/MasterPage.master” AutoEventWireup=”true”
图片 95    CodeFile=”Test.aspx.cs” Inherits=”MasterPage_Test” Title=”MasterPage测试” %>
图片 96
图片 97图片 98<%图片 99–创建对母版页的强类型引用,并点名到母版页的虚构路径–%>
图片 100图片 101<%图片 102@ MasterType VirtualPath=”~/MasterPage/MasterPage.master” %>
图片 103<asp:Content ID=”Content1″ ContentPlaceHolderID=”cph” runat=”Server”>
图片 104    <asp:dropdownlist id=”ddlPage” runat=”server” datasourceid=”XmlDataSource1″ datatextfield=”text”
图片 105        datavaluefield=”value” autopostback=”True” onselectedindexchanged=”ddlPage_SelectedIndexChanged”>
图片 106    </asp:dropdownlist>
图片 107    <asp:xmldatasource id=”XmlDataSource1″ runat=”server” datafile=”~/Config/DropDownListData.xml”>
图片 108    </asp:xmldatasource>
图片 109</asp:Content>
图片 110

MasterPage/Test.aspx.cs

图片 111using System;
图片 112using System.Data;
图片 113using System.Configuration;
图片 114using System.Collections;
图片 115using System.Web;
图片 116using System.Web.Security;
图片 117using System.Web.UI;
图片 118using System.Web.UI.WebControls;
图片 119using System.Web.UI.WebControls.WebParts;
图片 120using System.Web.UI.HtmlControls;
图片 121
图片 122public partial class MasterPage_Test : System.Web.UI.Page
图片 123图片 124图片 125{
图片 126    protected void Page_Load(object sender, EventArgs e)
图片 127图片 128    图片 129{
图片 130        // 在内容页用FindControl方法找到内容页中之控件
图片 131        DropDownList ddl = new DropDownList();
图片 132        ddl = Master.Master.FindControl(“ContentPlaceHolder1”).FindControl(“cph”).FindControl(“ddlPage”) as DropDownList;
图片 133        Master.Master.FindControl(“ContentPlaceHolder1”).FindControl(“cph”).Controls.Add(new LiteralControl(“<br />内容页中之DropDownList的ClientID是:” + ddl.ClientID));
图片 134
图片 135        // 增加一个事件处理,该事件是在母版页定义的一个集体事件
图片 136        Master.SelectedIndexChanged_ddlMaster += new CommandEventHandler(Master_SelectedIndexChanged_ddlMaster);
图片 137    }
图片 138
图片 139    void Master_SelectedIndexChanged_ddlMaster(object sender, CommandEventArgs e)
图片 140图片 141    图片 142{
图片 143        // CommandEventArgs已经当母版页中之共用事件“SelectedIndexChanged_ddlMaster”中指定
图片 144        string selectedText = e.CommandName;
图片 145        string selectedValue = e.CommandArgument.ToString();
图片 146
图片 147        ddlPage.SelectedValue = selectedValue;
图片 148    }
图片 149
图片 150    protected void ddlPage_SelectedIndexChanged(object sender, EventArgs e)
图片 151图片 152    图片 153{
图片 154        // 调用母版页的主意
图片 155        Master.SetddlMaster(ddlPage.SelectedIndex);
图片 156    }
图片 157}
图片 158

OK
[源码下载]

相关文章