程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> ASP.Net巧用窗體母版頁實例

ASP.Net巧用窗體母版頁實例

編輯:ASP.NET基礎

本文實例講述了ASP.Net巧用窗體母版頁的方法。分享給大家供大家參考。具體分析如下:

背景:每個網頁的基本框架結構類似:

浏覽網站的時候會發現,好多網站中,每個網頁的基本框架都是一樣的,比如,最上面都是網站的標題,中間是內容,最下面是網站的版權、開發提供商等信息:

在這些網頁中,表頭、底部的樣式和內容都是一樣的,不同的只是中間的內容。

因此在制作網站時,可以將這些共同的東西分離出來,放到“窗體母版頁”中,在需要的時候嵌套就可以。

巧用窗體母版項:

下面就開始行動(本文是以VisualStudio2013作為編程環境,可能在某些步驟與其他版本有所出入,請自行注意):

1、在項目中添加一Web窗體母版頁test.Master:右鍵項目—添加—新建項—Web窗體母版頁;
復制代碼 代碼如下:<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="test.master.cs" Inherits="Web.test1" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">

    <form id="form1" runat="server">
    <div>

        </asp:contentplaceholder>
    </div>
    </form>
<!--html>

2、在窗體母版頁test.Master的標記之間添加CSS、JS等引用(這裡先只添加CSS文件為例):
復制代碼 代碼如下:<link href="css/common.css" rel="stylesheet">    <%--添加引用CSS文件--%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</asp:contentplaceholder>
3、編輯窗體母版頁test.Master,添加每個網頁的公共內容(此處以網頁布局為上圖的布局為例,三個div的css樣式就暫不說明):
復制代碼 代碼如下:<form id="form1" runat="server">
    <div id="top">                                 <%--每個網頁的公共樣式:網頁頭部--%>
        <h1>某某某網站</h1>
    </div>
    <div id="main">                                <%--每個網頁的不同樣式:網頁主體內容--%>
             <%--此處為每個嵌套此母版的各個網頁的不同內容--%>
        </asp:contentplaceholder>
    </div>    
    <div id="footer">                              <%--每個網頁的公共樣式:網頁版權信息區--%>
        <p>版權所有:******</p>
    </div>
</form>

4、在每個網頁中嵌套窗體母版頁test.Master:右鍵項目—添加—新建項—包含母版頁的Web窗體test.aspx,在選擇母版頁對話框中選擇test.Master,確定,生成的網頁為:
復制代碼 代碼如下:<%@ Page Title="\" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="test2.aspx.cs" Inherits="Web.test2" %>
</asp:content>
</asp:content>
此時這個窗體test.aspx和母版頁test.Master的運行效果是一樣的,接下來就是加上每個網頁中的不同的內容。

5、此時,網頁test.aspx中ContentPlaceHolderID=“head”和ContentPlaceHolderID=“contentPlaceHolder”的就相當於母版頁test.Master中對應的。所以假如每個網頁都會有相同部分,就可以把相同部分寫在母版頁的相應位置,而將每個網頁的不同內容寫在ContentPlaceHolderID=“contentPlaceHolder”的中。

比如,第4步中,這個test.aspx已經嵌套了這個樣式,它的主題內容為 “ 網站內容 網站內容 網站內容 網站內容…… ”,則test.aspx中的代碼為:
復制代碼 代碼如下:<%@ Page Title="\" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="test2.aspx.cs" Inherits="Web.test2" %>
</asp:content>
    <p>網站內容 網站內容 網站內容 網站內容…… </p>
</asp:content>
假如我又建了一個名為test1.aspx的網頁,除了與test1.aspx中的主體內容不一樣之外,其他都一樣,那麼就可以讓test1.aspx嵌套母版頁test.Master,代碼為:
復制代碼 代碼如下:<%@ Page Title="\" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="test2.aspx.cs" Inherits="Web.test2" %>
</asp:content>
    <p>網站內容1 網站內容1 網站內容1 網站內容1…… </p>
</asp:content>

拓展:母版頁嵌套母版頁

當整個網站內的所有網頁並不是這一種樣式,而是一個大的網站分為幾個欄目,每個欄目中網頁的風格樣式統一,這時候可以用母版頁來嵌套母版頁 :

現在再建立一個母版頁(我在這裡給它取名為“子母版頁”),用它來嵌套上面的母版頁test.Master,代碼為:
復制代碼 代碼如下:<%@ Master Language="C#" MasterPageFile="~/test.Master" AutoEventWireup="true" CodeBehind="m_common.master.cs" Inherits="Web.admin.m_common" %>
</asp:content>
         <%--此處為嵌套“子母版頁”的各個網頁的不同內容--%>
    </asp:contentplaceholder>
</asp:content>
注意,代碼第一行的MasterPageFile=“~/test.Master”即要嵌套的母版頁的地址,“~”為當前目錄。

嵌套網頁母版項的好處:

可以利用VisualStudio中的窗體母版頁來將每個頁面中相同的部分進行封裝,在創建相同結構的網頁時,便可以直接嵌套這個窗體母版頁,避免了代碼的重復,提高了代碼的復用性;另外,如果要修改一個欄目甚至整個網站的風格,則只需修改母版頁以及母版頁中引入的<script>等文件,提高了代碼的可維護性,充分體現了OOP的思想。

希望本文所述對大家的asp.net程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved