【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快取
- 溫故知新——Spring AOPSpring
- .net 溫故知新【16】:Asp.Net Core WebAPI 篩選器ASP.NETWebAPI
- 溫故知新——Spring AOP(二)Spring
- .net 溫故知新【13】:Asp.Net Core WebAPI 使用依賴注入DIASP.NETWebAPI依賴注入
- 深淺複製,溫故知新
- 溫故知新 - 靶機練習-Toppo
- 溫故知新-多執行緒-深入剖析AQS執行緒AQS
- 【溫故知新】 程式設計原則和方法論程式設計
- 靶機練習 - 溫故知新 - Toppo(sudo 提權)
- asp.net使用母版頁中使用ajax指令碼取資料ASP.NET指令碼
- 溫故知新-輸入網址-顯示網頁-到底到底到底到底-發生了什麼?網頁
- .net 溫故知新:【5】非同步程式設計 async await非同步程式設計AI
- Android 開發高手課 溫故知新篇Android
- 溫故知新-分散式鎖的實現原理和存在的問題分散式
- .net 溫故知新:【10】.NET ORM框架EFCore使用入門之CodeFirs、DBFirstORM框架
- 溫故知新----執行緒之Runnable與Callable介面的本質區別執行緒
- HTML頁面轉換為Sharepoint母版頁(實戰)HTML
- 【溫故知新】分散式事務及分散式鎖系列文章總結【石杉的架構筆記】分散式架構筆記
- 溫故知新,微軟官方推薦的Visual Studio原始碼管理之Git Ignore清單,開啟新專案必備寶書微軟原始碼Git
- 溫故知新,基於播客形式學習英語之EnglishPod 365, 英語口語發音注意事項
- 溫故知新,基於播客形式學習英語之EnglishPod 365, Elementary集合41-50(音訊、原文、講解)音訊
- 溫故知新,基於播客形式學習英語之EnglishPod 365, Elementary初級B集合(音訊、原文、講解)音訊
- 溫故而知新,重溫 Java 7 的那些“新”特性Java
- 移動測試 2.0+ - 溫元良
- 溫故之C# using注意事項C#
- ASP.NET Core 2.0網址重定向方法ASP.NET
- asp.net core mvc 分頁ASP.NETMVC
- C++ 2.0新特性C++
- Asp.Net分頁生成頁碼超連結方法ASP.NET
- ASP.NET Razor – C# 變數簡介ASP.NETC#變數
- asp.net mvc 錯誤頁面ASP.NETMVC
- 雲伺服器IIS 註冊 ASP.NET 2.0/4.0伺服器ASP.NET
- .Net/C#分庫分表高效能O(1)瀑布流分頁C#
- AspNet2.0頁面生命週期
- 〔譯〕TypeScript 2.0 的新特性TypeScript
- TiDB 2.0 RC1 ReleaseTiDB
- Asp.Net WEBAPI 增加身份驗證 (OAUTH 2.0方式)ASP.NETWebAPIOAuth