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

ASP.NET 控件開發(二):簡單屬性實作與虛擬屬性設計

     編輯:關於ASP.NET

控件與使用者互動的主要管道是屬性與事件。本文示範簡單型別屬性(string、int 等)的標準實作模式、虛擬屬性支援繼承覆寫、屬性在 Render 階段的應用。

標準屬性實作範本

public class PicShow : Control
{
    private string _imgUrl;

    public virtual string ImgUrl
    {
        get => _imgUrl;
        set => _imgUrl = value ?? string.Empty;
    }

    protected override void Render(HtmlTextWriter writer)
    {
        writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "center");
        writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100px");
        writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100px");
        writer.RenderBeginTag(HtmlTextWriterTag.Div);

        writer.AddAttribute(HtmlTextWriterAttribute.Src, ImgUrl);
        writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "80px");
        writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "80px");
        writer.RenderBeginTag(HtmlTextWriterTag.Img);
        writer.RenderEndTag();  // Img

        writer.RenderEndTag();  // Div
    }
}

關鍵設計要點

  • 私有欄位 + 公共屬性:封裝內部儲存,對外提供存取介面
  • virtual 關鍵字:允許衍生類別覆寫屬性行為(如加入驗證、快取、事件觸發)
  • null 防護:value ?? string.Empty 避免 Render 時 NullReference
  • HtmlTextWriter 強型別 API:使用 HtmlTextWriterStyle、HtmlTextWriterAttribute、HtmlTextWriterTag 列舉,避免魔術字串

ASPX 使用範例

<%@ Register TagPrefix="cc" Namespace="MyControls" Assembly="MyControls" %>
<cc:PicShow ID="PicShow1" runat="server" ImgUrl="~/Images/photo.jpg" />

屬性分類建議

分類範例標記
外觀BackColor, ForeColor, Font, CssClass繼承自 WebControl
行為Enabled, Visible, ReadOnly繼承自 WebControl
資料DataSource, DataTextField, SelectedValue自訂
業務ImgUrl, MaxLength, AllowMultiple自訂,加 virtual
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved