ASP.Net巧用表單主版頁面

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   strong   for   檔案   ar   

    

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

        瀏覽網站的時候會發現,好多網站中,每個網頁的基本架構都是一樣的,比如,最上面都是網站的標題,中間是內容,最下面是網站的著作權、開發供應商等資訊:

 

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

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


           巧用表單母片項:

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

        1、在項目中添加一Web表單主版頁面test.Master:右鍵項目—添加—建立項—Web表單主版頁面;

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="test.master.cs" Inherits="Web.test1" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <asp:ContentPlaceHolder ID="head" runat="server">    </asp:ContentPlaceHolder></head><body>    <form id="form1" runat="server">    <div>        <asp:ContentPlaceHolder ID="contentPlaceHolder" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body></html>

        2、在表單主版頁面test.Master的<head>標記之間添加CSS、JS等引用(這裡先只添加CSS檔案為例):     

<head runat="server">    <link href="css/common.css" rel="stylesheet" />    <%--添加引用CSS檔案--%>          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <asp:ContentPlaceHolder ID="head" runat="server">    </asp:ContentPlaceHolder></head>
            3、編輯表單主版頁面test.Master,添加每個網頁的公用內容(此處以網頁布局為的布局為例,三個div的css樣式就暫不說明):

<body>    <form id="form1" runat="server">        <div id="top">                                 <%--每個網頁的公用樣式:網頁頭部--%>            <h1>某某某網站</h1>        </div>                    <div id="main">                                <%--每個網頁的不同樣式:網頁主體內容--%>            <asp:contentplaceholder id="contentPlaceHolder" runat="server">                 <%--此處為每個嵌套此母片的各個網頁的不同內容--%>            </asp:contentplaceholder>        </div>             <div id="footer">                              <%--每個網頁的公用樣式:網頁著作權資訊區--%>            <p>著作權:******</p>        </div>    </form></body>

        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 ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="contentPlaceHolder" runat="server"></asp:Content>
             此時這個表單test.aspx和主版頁面test.Master的運行效果是一樣的,接下來就是加上每個網頁中的不同的內容。

       

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

        比如,第4步中,這個test.aspx已經嵌套了這個樣式,它的主題內容為 “ 網站內容 網站內容 網站內容 網站內容…… ”,則test.aspx中的代碼為:

         

<%@ Page Title="" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="test2.aspx.cs" Inherits="Web.test2" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="contentPlaceHolder" runat="server">    <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 ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="contentPlaceHolder" runat="server">    <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 ID="Content1" ContentPlaceHolderID="head" runat="server">    </asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="contentPlaceHolder" runat="server">        <asp:ContentPlaceHolder ID="contentPlaceHolder_child" runat="server">         <%--此處為嵌套“子主版頁面”的各個網頁的不同內容--%>    </asp:ContentPlaceHolder></asp:Content>
            注意,代碼第一行的MasterPageFile=“~/test.Master”即要嵌套的主版頁面的地址,“~”為目前的目錄。


        嵌套網頁母片項的好處:

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

   

ASP.Net巧用表單主版頁面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.