日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MasterPage技术

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MasterPage技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看頁面覺得很奇怪,怎么在源代碼里看不到鏈接,效果上卻有鏈接,于是猜想是不是有類似jsp里面的include之類的方法,比如說當初我用的用戶自定義控件usercontrol之類的,結果沒發現,卻發現多了個<asp:content>然后沒有了<head><body>之類的。上網查了下,結果這是MasterPage技術,百度知道的介紹如下:

?????????? MasterPage其實是一種模板,它可以讓你快速的建立相同頁面布局而內部不同的網頁,如果一個網站有多個MasterPage,那么新建aspx文件的時候就可以選擇需要實現頁面布局的MasterPage。另外,在你沒有使用MasterPage之前,如果N個相同的頁面布局需要改動成另外一個樣式,那么你就要做很多無聊而又不得不做的工作,對N個頁面進行一一更改,如果使用了MasterPage,你只要改動一個頁面也就是MasterPage文件就可以了。還有,你是否發現你要要部署的web程序越來越大,使用MasterPage在一定程度上會減小web程序的大小,因為所有的重復的html標記都只有一個版本。


首先,我們需要打開VS2005,創建一個WebSite(這里要注意,是創建一個WebSite而不是創建一個Project)

然后,給剛建立的WebSite添加一個名字叫MasterPage.master的MasterPage,這個時候我們會看到該文件有如下內容:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>

看起來和一個普通的aspx頁面差不多,但是最上面的聲明<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>告訴我們,這個是一個模板頁,同時我們可以看到在<div></div>之間包含了一個asp的控件contentplaceholder,這個叫內容占位符,他的作用就是當你用<table>或者<div>進行布局后,用這個控件去“霸占”一個地方,而這個地方的主人,不是contentplaceholder,而是后面將提到的Content。

下面用<Table>做下示例



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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<table width="60%">
<tr>
<td colspan="3" style="height:80px">
<asp:ContentPlaceHolder ID="TopContent" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
<tr>
<td style="width:30">
<asp:ContentPlaceHolder ID="LeftContent" runat="server">
</asp:ContentPlaceHolder>
</td>
<td>
<asp:ContentPlaceHolder ID="RightContent" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
<tr>
<td colspan="3">
<asp:ContentPlaceHolder ID="FootContent" runat="server">
</asp:ContentPlaceHolder>

</td>
</tr>

</table>
</form>
</body>
</html>

這樣一個簡單的模板頁就創建好了,在這個模板頁上一共有4部分,一個是頂部的TopContent,一個是中間偏左的LeftContent,一個是中間偏右的RightContent,最后個就是底部的FootContent,4個部分均有一個ContentPlaceHolder。

有了一個創建好的MasterPage后,我們就可以進行下面的工作了,現在我們創建一個aspx頁面,名字叫Default2.aspx,注意創建的時候一定要勾上Select master page,創建的時候會有一個選擇模板的界面,由于只創建了一個模板,所以直接選擇MasterPage.master就行了,如果你創建了多個模板頁的話,就需要在這里進行選擇你當前頁面所需要加載的模板頁。

現在,我們有了一個基于模板的aspx頁面Default2.aspx,代碼如下:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TopContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="LeftContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="RightContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="FootContent" Runat="Server">
</asp:Content>


很明顯,他和我們以往創建的aspx的頁面很不一樣,他沒有HTML的相關聲明,而且在頁面的頭部聲明<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>中,比普通的aspx頁面多了MasterPageFile="~/MasterPage.master"。在剛才MasterPage.master中的設置,我們定義了四個ContentPlaceHolder,ID分別是TopContent,LeftContent,RightContent,FootContent,在Default2.aspx頁面下的Content控件里,有一個屬性就是ContentPlaceHolderID,該字段表明該Content控件中的內容代替ID指向的ContentPlaceHolder占位控件,這就是真的“霸主”了。這樣一來,頁面布局就使用MasterPage.master中的,而內容就使用Default2.aspx中Content控件下的,因此你在Default2.aspx 中找不到Html頁面的基本格式標記,如<head>、<body>。

現在我們來看下Default2.aspx的設計界面,看起來和剛才我們創建的MasterPage.master很像,但是我們發現在Default2.aspx中,除了Content內部以外,其他地方都是不能編輯的。




設計好它以后可以統一每個頁面的頁眉,頁腳.新建一個MasertPage后,再新建其他頁面的時候只要選擇好模板頁,然后在contentplaceholder里寫好你需要的東西.那么運行后就不僅有你寫的東西有了,模板頁的東西也會自己出現,可以減少很多重復工作.

<!-- 版模頁 -->
<%@ Master Language="C#" AutoEventWireup="true" Inherits="DuwControls.DuwDefaultMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<asp:contentplaceholder id="CHead" runat="server">
</asp:contentplaceholder>
</head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="ScriptMan" runat="server">
ScriptMain
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="CTop" runat="server">
CTop
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="CLeft" runat="server">
CLeft
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="CMain" runat="server">
CMain
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="CRight" runat="server">
CRight
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="CFoot" runat="server">
CFoot
</asp:ContentPlaceHolder>
</form>
</body>
</html>
ContentPlaceHolder 為模版部分的占用位置


//模版頁后臺,繼承自系統 System.Web.UI.MasterPage
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web;

namespace DuwControls
...{
public class DuwDefaultMasterPage : MasterPage
...{
private ContentPlaceHolder _CHead;
private ContentPlaceHolder _CTop;
private ContentPlaceHolder _CLeft;
private ContentPlaceHolder _CMain;
private ContentPlaceHolder _CRight;
private ContentPlaceHolder _CFoot;
private ContentPlaceHolder _ScriptMan;

public ContentPlaceHolder CHead ...{ get ...{ return _CHead; } }
public ContentPlaceHolder CTop ...{ get ...{ return _CTop; } }
public ContentPlaceHolder CLeft ...{ get ...{ return _CLeft; } }
public ContentPlaceHolder CMain ...{ get ...{ return _CMain; } }
public ContentPlaceHolder CRight ...{ get ...{ return _CRight; } }
public ContentPlaceHolder CFoot ...{ get ...{ return _CFoot; } }
public ContentPlaceHolder ScriptMan ...{ get ...{ return _ScriptMan; } }

protected override void OnInit(EventArgs e)
...{
foreach (Control ctrl in this.Controls)
...{
if (ctrl is System.Web.UI.HtmlControls.HtmlHead)//模版Head頭部部分
...{
foreach (Control ctl in ctrl.Controls)
...{
if (ctl is ContentPlaceHolder)
...{
_CHead = ctl as ContentPlaceHolder;
}
}
}
else if (ctrl is System.Web.UI.HtmlControls.HtmlForm)//模版Form主體部分
...{
foreach (Control ctl in ctrl.Controls)
...{
if (ctl is ContentPlaceHolder)
...{
switch (ctl.ID)
...{
case "CTop":
_CTop = ctl as ContentPlaceHolder;
break;
case "CLeft":
_CLeft = ctl as ContentPlaceHolder;
break;
case "CMain":
_CMain = ctl as ContentPlaceHolder;
break;
case "CRight":
_CRight = ctl as ContentPlaceHolder;
break;
case "CFoot":
_CFoot = ctl as ContentPlaceHolder;
break;
case "ScriptMan":
_ScriptMan = ctl as ContentPlaceHolder;
break;
default:
break;
}
}
}
}
}
base.OnInit(e);
}
}
}



//頁面.cs運用部分
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using DuwCompontents;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;

namespace DuwControls
...{
public class DuwPage : Page
...{
屬性#region 屬性
public string SkinType
...{
get ...{ return _SkinType; }
set ...{ _SkinType = value; }
}

public int BoardID ...{ get ...{ return _BoardID; } set ...{ _BoardID = value; } }
#endregion

事件#region 事件
protected override void OnPreInit(EventArgs e)
...{
_SkinType = "wow";//修改頁面的SkinType屬性
this.MasterPageFile = "/Themes/wow/Default.master"; //修改模版頁的原引用路徑/Themes/Default/Default.master
DuwDefaultMasterPage dp = this.Master as DuwDefaultMasterPage;//取得頁面的模版
dp.CTop //為模板中的CTop占位部分
base.OnPreInit(e);
}
}
}



//aspx頁面部分
<%@ Page Language="C#" MasterPageFile="~/Themes/Default/Default.master" ValidateRequest="false"
Inherits="DuwControls.DuwPage" SkinType="default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CHead" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ScriptMan" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="CTop" Runat="Server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="CLeft" Runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="CMain" Runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="CRight" Runat="Server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="CFoot" Runat="Server">
</asp:Content>

轉載于:https://www.cnblogs.com/ali88/archive/2009/05/29/1491746.html

總結

以上是生活随笔為你收集整理的MasterPage技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日批视频在线免费看 | 国产午夜精品一区二区三区欧美 | 日韩丰满少妇 | 超碰在线观看av | 日韩欧美操 | 伊人伊人伊人伊人 | wwwxxx在线观看 | 免费男女视频 | 欧美在线一区二区三区四区 | 外国黄色录像 | 精品产国自在拍 | 国产素人在线观看 | 一区二区成人在线 | 99资源在线| 成人免费毛片网 | 色图综合网 | 可以免费看黄的网站 | 青草视频免费在线观看 | 粗大的内捧猛烈进出在线视频 | 在线视频三区 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 日本美女在线 | 超碰在线最新地址 | 91插插插影库永久免费 | 在线看福利影 | 欧美少妇网 | 国语对白做受69 | 久久久久www | 青草综合 | 国产激情久久久 | 久久久96人妻无码精品 | 99热热热| 国产精品毛片久久 | 久久久久香蕉 | 亚洲日批 | 麻豆亚洲av熟女国产一区二 | 亚洲日本一区二区三区 | а√天堂www在线天堂小说 | 美腿丝袜一区二区三区 | 一本大道东京热无码 | 中文字幕最新在线 | 男女一区 | 波多野结衣精品视频 | 深夜在线免费视频 | 特淫毛片 | 综合色88| 国产精品极品白嫩在线 | 一级特黄妇女高潮2 | 日韩精品资源 | 免费大片在线观看www | 亚洲黄页 | 在线国产网站 | 3级av| 激情五月亚洲 | 中文字幕一区二区三区波野结 | 亚洲区国产区 | 亚洲精品国产精品国自产观看 | 成人1区2区3区 | 91精品人妻一区二区三区 | 国内外免费激情视频 | 国产最新视频 | 免费在线观看污网站 | 日本国产一级片 | 亚洲中文字幕一区二区 | 超碰人操| 亚洲欧美在线免费 | 免费国产在线视频 | 无码精品一区二区免费 | 亚洲一区二区三区日韩 | 亚洲美女av在线 | 亚洲综合另类 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 无码人妻精品一区二区蜜桃色欲 | 亚洲精品6 | 国产精品一品二区三区的使用体验 | wwwjizzzcom | www.黄色在线| 主播av在线 | 精品一区二区三区免费视频 | 国产成人精品久久 | 欧美大片视频在线观看 | 在线观看免费黄色 | 色综合久久精品亚洲国产 | 日韩午夜在线视频 | 亚洲乱码电影 | 图书馆的女友在线观看 | 男人天堂a | 亚洲一区二区三区视频在线 | 欧美精品免费在线观看 | 97久久人国产精品婷婷 | 久久久不卡 | 日韩欧美精品在线播放 | 欧洲一级黄 | 天天爱天天做 | 小视频免费在线观看 | 91视频黄色 | 成人学院中文字幕 | 欧美做受xxxxxⅹ性视频 | 亚洲高清视频一区二区 |