【webabcd】溫故知新ASP.NET 2.0(C#)(1) - MasterPage(母版頁)
介紹
母版頁(MasterPage)就相當於模板頁,挺簡單的,沒什麼好說的。基於母版頁的常用的功能有:母版頁和內容頁之間資訊的傳遞,在內容頁中用FindControl方法找到內容頁中的控制元件等。另外,母版頁是可以巢狀的。
關鍵
在內容頁的頭部加上母版頁的強型別引用
1、內容頁傳遞資料到母版頁 - 母版頁建立一個公共方法,然後內容頁通過“Master.方法”來呼叫這個公共方法
2、母版頁傳遞資料到內容頁 - 母版頁建立一個公共事件來傳遞資料,然後內容頁處理這個事件
3、內容頁中用FindControl方法找到內容頁中的控制元件 - 用“Master.FindControl("ContentPlaceHolder1").FindControl("你要查詢的控制元件ID")”來查詢
4、巢狀母版頁 - 說起來麻煩,看原始碼吧
示例
主母板頁
Site.master
次母板頁
MasterPage/MasterPage.master
MasterPage/MasterPage.master.cs
內容頁
MasterPage/Test.aspx
MasterPage/Test.aspx.cs
母版頁(MasterPage)就相當於模板頁,挺簡單的,沒什麼好說的。基於母版頁的常用的功能有:母版頁和內容頁之間資訊的傳遞,在內容頁中用FindControl方法找到內容頁中的控制元件等。另外,母版頁是可以巢狀的。
關鍵
在內容頁的頭部加上母版頁的強型別引用
--建立對母版頁的強型別引用,並指定到母版頁的虛擬路徑--%>
@ MasterType VirtualPath="~/MasterPage/MasterPage.master" %>
@ MasterType VirtualPath="~/MasterPage/MasterPage.master" %>
1、內容頁傳遞資料到母版頁 - 母版頁建立一個公共方法,然後內容頁通過“Master.方法”來呼叫這個公共方法
2、母版頁傳遞資料到內容頁 - 母版頁建立一個公共事件來傳遞資料,然後內容頁處理這個事件
3、內容頁中用FindControl方法找到內容頁中的控制元件 - 用“Master.FindControl("ContentPlaceHolder1").FindControl("你要查詢的控制元件ID")”來查詢
4、巢狀母版頁 - 說起來麻煩,看原始碼吧
示例
主母板頁
Site.master
@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="Site" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>重新過一遍ASP.NET 2.0(C#)title>
head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
asp:ContentPlaceHolder>
div>
form>
body>
html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>重新過一遍ASP.NET 2.0(C#)title>
head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
asp:ContentPlaceHolder>
div>
form>
body>
html>
次母板頁
MasterPage/MasterPage.master
@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<p>
我是一個巢狀母版頁
p>
<p>
母版頁中的內容
<asp:DropDownList ID="ddlMaster" runat="server" DataSourceID="XmlDataSource1" DataTextField="text"
DataValueField="value" AutoPostBack="True" OnSelectedIndexChanged="ddlMaster_SelectedIndexChanged">
asp:DropDownList><asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Config/DropDownListData.xml">
asp:XmlDataSource>
p>
<p>
內容頁中的內容
<asp:ContentPlaceHolder ID="cph" runat="Server" />
p>
asp:Content>
CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<p>
我是一個巢狀母版頁
p>
<p>
母版頁中的內容
<asp:DropDownList ID="ddlMaster" runat="server" DataSourceID="XmlDataSource1" DataTextField="text"
DataValueField="value" AutoPostBack="True" OnSelectedIndexChanged="ddlMaster_SelectedIndexChanged">
asp:DropDownList><asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Config/DropDownListData.xml">
asp:XmlDataSource>
p>
<p>
內容頁中的內容
<asp:ContentPlaceHolder ID="cph" runat="Server" />
p>
asp:Content>
MasterPage/MasterPage.master.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage_MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
/**////
/// 設定ddlMaster的選中索引
/// 這個方法由內容頁呼叫
///
///
public void SetddlMaster(int index)
{
ddlMaster.SelectedIndex = index;
}
protected void ddlMaster_SelectedIndexChanged(object sender, EventArgs e)
{
// ddlMaster的選中索引改變後,激發SelectedIndexChanged_ddlMaster事件
SelectedIndexChanged_ddlMaster(this, new CommandEventArgs(ddlMaster.SelectedItem.Text, ddlMaster.SelectedValue));
}
// 宣告一個公共時間事件,讓內容頁用
public event CommandEventHandler SelectedIndexChanged_ddlMaster;
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage_MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
/**////
/// 設定ddlMaster的選中索引
/// 這個方法由內容頁呼叫
///
///
public void SetddlMaster(int index)
{
ddlMaster.SelectedIndex = index;
}
protected void ddlMaster_SelectedIndexChanged(object sender, EventArgs e)
{
// ddlMaster的選中索引改變後,激發SelectedIndexChanged_ddlMaster事件
SelectedIndexChanged_ddlMaster(this, new CommandEventArgs(ddlMaster.SelectedItem.Text, ddlMaster.SelectedValue));
}
// 宣告一個公共時間事件,讓內容頁用
public event CommandEventHandler SelectedIndexChanged_ddlMaster;
}
內容頁
MasterPage/Test.aspx
@ Page Language="C#" MasterPageFile="~/MasterPage/MasterPage.master" AutoEventWireup="true"
CodeFile="Test.aspx.cs" Inherits="MasterPage_Test" Title="MasterPage測試" %>
--建立對母版頁的強型別引用,並指定到母版頁的虛擬路徑--%>
@ MasterType VirtualPath="~/MasterPage/MasterPage.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cph" runat="Server">
<asp:dropdownlist id="ddlPage" runat="server" datasourceid="XmlDataSource1" datatextfield="text"
datavaluefield="value" autopostback="True" onselectedindexchanged="ddlPage_SelectedIndexChanged">
asp:dropdownlist>
<asp:xmldatasource id="XmlDataSource1" runat="server" datafile="~/Config/DropDownListData.xml">
asp:xmldatasource>
asp:Content>
CodeFile="Test.aspx.cs" Inherits="MasterPage_Test" Title="MasterPage測試" %>
--建立對母版頁的強型別引用,並指定到母版頁的虛擬路徑--%>
@ MasterType VirtualPath="~/MasterPage/MasterPage.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cph" runat="Server">
<asp:dropdownlist id="ddlPage" runat="server" datasourceid="XmlDataSource1" datatextfield="text"
datavaluefield="value" autopostback="True" onselectedindexchanged="ddlPage_SelectedIndexChanged">
asp:dropdownlist>
<asp:xmldatasource id="XmlDataSource1" runat="server" datafile="~/Config/DropDownListData.xml">
asp:xmldatasource>
asp:Content>
MasterPage/Test.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 在內容頁用FindControl方法找到內容頁中的控制元件
DropDownList ddl = new DropDownList();
ddl = Master.Master.FindControl("ContentPlaceHolder1").FindControl("cph").FindControl("ddlPage") as DropDownList;
Master.Master.FindControl("ContentPlaceHolder1").FindControl("cph").Controls.Add(new LiteralControl("
內容頁中的DropDownList的ClientID是:" + ddl.ClientID));
// 增加一個事件處理,該事件是在母版頁定義的一個公共事件
Master.SelectedIndexChanged_ddlMaster += new CommandEventHandler(Master_SelectedIndexChanged_ddlMaster);
}
void Master_SelectedIndexChanged_ddlMaster(object sender, CommandEventArgs e)
{
// CommandEventArgs已經在母版頁中的公共事件“SelectedIndexChanged_ddlMaster”中指定
string selectedText = e.CommandName;
string selectedValue = e.CommandArgument.ToString();
ddlPage.SelectedValue = selectedValue;
}
protected void ddlPage_SelectedIndexChanged(object sender, EventArgs e)
{
// 呼叫母版頁的方法
Master.SetddlMaster(ddlPage.SelectedIndex);
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 在內容頁用FindControl方法找到內容頁中的控制元件
DropDownList ddl = new DropDownList();
ddl = Master.Master.FindControl("ContentPlaceHolder1").FindControl("cph").FindControl("ddlPage") as DropDownList;
Master.Master.FindControl("ContentPlaceHolder1").FindControl("cph").Controls.Add(new LiteralControl("
內容頁中的DropDownList的ClientID是:" + ddl.ClientID));
// 增加一個事件處理,該事件是在母版頁定義的一個公共事件
Master.SelectedIndexChanged_ddlMaster += new CommandEventHandler(Master_SelectedIndexChanged_ddlMaster);
}
void Master_SelectedIndexChanged_ddlMaster(object sender, CommandEventArgs e)
{
// CommandEventArgs已經在母版頁中的公共事件“SelectedIndexChanged_ddlMaster”中指定
string selectedText = e.CommandName;
string selectedValue = e.CommandArgument.ToString();
ddlPage.SelectedValue = selectedValue;
}
protected void ddlPage_SelectedIndexChanged(object sender, EventArgs e)
{
// 呼叫母版頁的方法
Master.SetddlMaster(ddlPage.SelectedIndex);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-330927/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .net 溫故知新【15】:Asp.Net Core WebAPI 配置ASP.NETWebAPI
- .net 溫故知新【14】:Asp.Net Core WebAPI 快取ASP.NETWebAPI快取
- VS2005入門之MasterPage [母版頁]AST
- 溫故知新——Spring AOPSpring
- .net 溫故知新【16】:Asp.Net Core WebAPI 篩選器ASP.NETWebAPI
- 溫故知新——Spring AOP(二)Spring
- .net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DIASP.NETWebAPI依賴注入
- js陣列API--溫故知新JS陣列API
- 溫故知新 - 靶機練習-Toppo
- 溫故知新-多執行緒-深入剖析AQS執行緒AQS
- 溫故知新----再談建構函式 (轉)函式
- 【溫故知新】 程式設計原則和方法論程式設計
- 靶機練習 - 溫故知新 - Toppo(sudo 提權)
- 溫故知新-輸入網址-顯示網頁-到底到底到底到底-發生了什麼?網頁
- .net 溫故知新:【5】非同步程式設計 async await非同步程式設計AI
- 溫故知新之從原始碼探析jsp執行原理原始碼JS
- asp.net 內容頁訪問母版頁中的控制元件ASP.NET控制元件
- 母版頁(Master Pages)AST
- asp.net 在使用母版頁的子頁面cs後臺程式碼中控制母版頁中的登入控制元件顯示ASP.NET控制元件
- ASP.NET母版頁使用 按下回車重新整理頁面 去掉 標籤ASP.NET
- 溫故知新-分散式鎖的實現原理和存在的問題分散式
- asp.net使用母版頁中使用ajax指令碼取資料ASP.NET指令碼
- C# 2.0 新特性C#
- Android 開發高手課 溫故知新篇Android
- .net 溫故知新:【10】.NET ORM框架EFCore使用入門之CodeFirs、DBFirstORM框架
- ASP.NET動態網站開發培訓-34.互動論壇製作(二、製作母版頁和使用母版頁)ASP.NET網站
- 溫故知新----執行緒之Runnable與Callable介面的本質區別執行緒
- ASP.NET 2.0 網頁採集方法ASP.NET網頁
- .NET基礎之母版頁應用
- [譯]ASP.NET Core 2.0 佈局頁面ASP.NET
- 溫故而知新:c#中的特性(attribute)C#
- 【jackyrong 】asp.net 2.0中 updatepannel(1)ASP.NET
- HTML頁面轉換為Sharepoint母版頁(實戰)HTML
- ASP.NET 2.0(C#)- Profile(儲存使用者配置)ASP.NETC#
- ASP.NET 2.0中動態修改頁面標題ASP.NET
- Asp.net 2.0 用Membership自己寫登入頁面ASP.NET
- ASP.NET 2.0中的頁面輸出快取ASP.NET快取
- 【溫故知新】分散式事務及分散式鎖系列文章總結【石杉的架構筆記】分散式架構筆記