首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 實現模板頁 (Master Page 前身):重寫 Render 方法注入佈局、內容頁面自動套用統一框架

     編輯:關於ASP.NET

ASP.NET 1.x 無內建 Master Page,常用基類重寫 Render 實現模板頁功能。本文展示經典 WebPageTemplate 基類實作。

模板基類核心代碼

public class WebPageTemplate : System.Web.UI.Page
{
    // 可覆寫的區塊屬性
    public string PageTitle { get; set; } = "預設標題";
    public string PageHeader { get; set; } = "...頁首...
"; public string PageScript { get; set; } = ""; public string PageLeft { get; set; } = " 選單"; public string PageFooter { get; set; } = "
版權所有
"; protected override void Render(HtmlTextWriter writer) { // 1. 輸出外層框架 writer.Write("" + PageTitle + ""); writer.Write(PageScript + ""); writer.Write(PageHeader); // 2. 兩欄佈局:左側選單 + 右側內容區 writer.Write("
 " + PageLeft + ""); // 3. 關鍵:呼叫基類 Render,讓內容頁面 (.aspx) 的 HTML/控件渲染到此處 base.Render(writer); // 4. 結束佈局 writer.Write("
"); writer.Write("
" + PageFooter + "
"); writer.Write(""); } }

內容頁面使用方式

// Code-behind 繼承模板基類
public partial class MyPage : WebPageTemplate
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // 可選覆寫區塊
        this.PageTitle = "我的頁面標題";
        this.PageLeft = "
  • 選項1
  • 選項2
"; // PageHeader/PageFooter/PageScript 使用預設值 } }
<!-- MyPage.aspx 只有內容區標記,無 html/head/body -->
<asp:GridView ID="GridView1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="提交" />

優缺點分析

優點缺點
ASP.NET 1.x 可用、無需 IDE 支援設計檢視無法正確顯示 (VS 不識別基類佈局)
邏輯集中、強型別屬性覆寫佈局修改需重新編譯基類 DLL
效能佳 (無額外檔案解析)巢狀模板、多內容區支援困難

演進:ASP.NET 2.0 Master Page

<!-- Site.master -->
<%@ Master Language="C#" %>
<html><head><title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title></head><body>
  <div id="header">頁首</div>
  <div id="left"><asp:ContentPlaceHolder ID="LeftContent" runat="server" /></div>
  <div id="main"><asp:ContentPlaceHolder ID="MainContent" runat="server" /></div>
  <div id="footer">頁尾</div>
</body></html>

<!-- ContentPage.aspx -->
<%@ Page MasterPageFile="~/Site.master" %>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
  內容區標記...
</asp:Content>
  • 設計檢視完整支援、多 ContentPlaceHolder、巢狀 Master、VS 智慧提示。
  • Core / MVC 使用 Layout / _Layout.cshtml 同樣概念。

理解手工模板頁原理,有助於掌握 Master Page / Layout 內部運作,並在特殊需求下 (如動態切換佈局、無 Master 環境) 靈活應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved