什麼是主頁?
當需要重用內容時,可以使用主頁。主頁就像一個模板一樣,在主頁中定義公用的內容(即不可變更的內容),及可以變更的內容。
主頁的擴展名為.master。
主頁的源碼如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="EventRegistratrion.master.cs" Inherits="EventRegistratrion" %>
<!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>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
<!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>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
加入主頁方法:
在方案中加入新項目,選擇“主版頁面”即可。在加入後的主頁中可以使用表格、ContentPlaceHolder控件等設計頁面。
使用主頁方法:
方法1:單個頁使用主頁
某個頁面使用主頁時,需在Page命令中加入MasterPageFile="~/EventRegistratrion.master"屬性。如下代碼:
<%@ Page Language="C#" MasterPageFile="~/EventRegistratrion.master" AutoEventWireup="true"
CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
方法2:全部頁面使用主頁
需要將所有頁使用成主面時,需在Web.Config中加入下面代碼,把默認的主面賦予所有頁面。
<system.web>
<pages masterPageFile="~/EventRegistratrion.master"></pages>
</system.web>
<pages masterPageFile="~/EventRegistratrion.master"></pages>
</system.web>
注:1、當某面中設置了主頁時,web.config中定義的主頁將不起作用
2、當定義主頁後,在加入項目時,勾選擇主版頁面。這樣新增的頁面會變成主頁樣式。
方法3:根據需要選擇主頁
在當頁中有多個主頁,同時根據需要想切換主頁,就可以在頁面中判斷主頁。需使用Page_PreInit事件。代碼如下:
this.PreInit += new EventHandler(_Default_PreInit);
void _Default_PreInit(object sender, EventArgs e)
{
if (Request.UserAgent.Contains("Msie"))
{
//選擇一種主頁
this.MasterPageFile = "~/EventRegistratrion.master";
}
else
{
//選擇另一種主頁
this.MasterPageFile = "~/Default.master";
}
}
void _Default_PreInit(object sender, EventArgs e)
{
if (Request.UserAgent.Contains("Msie"))
{
//選擇一種主頁
this.MasterPageFile = "~/EventRegistratrion.master";
}
else
{
//選擇另一種主頁
this.MasterPageFile = "~/Default.master";
}
}
被套用主版的頁面需要變更,代碼如下:
<%--設置主頁-->
<%@ Page Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true"
Codebehind="Default.aspx.cs"
Inherits="WebScottForum.Default" %>
<%@ MasterType VirtualPath="~/Main.master" %>
<%--編輯ContentPlaceHolder中的內容,ContentPlaceHolderID:與主面頁面中ContentPlaceHolder的ID對應-->
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolderMain">
<hr align="center" color="red" size="%100" />
要顯示的內容<br />
<br />
<br />
Ha Ha<br />
<br />
<br />
</asp:Content>
<%--此部分需要注釋掉
<!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>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>--%>
<%@ Page Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true"
Codebehind="Default.aspx.cs"
Inherits="WebScottForum.Default" %>
<%@ MasterType VirtualPath="~/Main.master" %>
<%--編輯ContentPlaceHolder中的內容,ContentPlaceHolderID:與主面頁面中ContentPlaceHolder的ID對應-->
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolderMain">
<hr align="center" color="red" size="%100" />
要顯示的內容<br />
<br />
<br />
Ha Ha<br />
<br />
<br />
</asp:Content>
<%--此部分需要注釋掉
<!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>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>--%>
或者在在新建aspx時,勾選「選擇主版頁」