繼承 Control 與 WebControl 最大差異在於樣式支援:WebControl 內建 CssClass、ForeColor、BackColor 等樣式屬性,並實作 IAttributeAccessor 自動處理屬性輸出。
早期繼承 Control 時,Render 方法充斥字串拼接:
writer.Write("<table style='width:287px;height:128px;border-width:0'>");
writer.Write("<tr><td>支付方式</td><td>");
writer.Write("<select name='paymentMethod' id='paymentMethod' style='width:100%'>");
// ... 大量字串拼接
缺點顯而易見:編譯期無法檢測 HTML 錯誤(如 <talbe>)、難以維護、跨瀏覽器相容性堪慮。
RenderBeginTag/RenderEndTag 確保標籤配對正確ControlStyle 封裝樣式邏輯下篇將展示如何重構為 WebControl 並使用 RenderContents。