繼承 WebControl 時,覆寫 RenderContents 僅負責輸出內層標記,外層標籤(如 <table>)由基類根據 TagKey 自動渲染。這比覆寫 Render 更規範、更支援樣式屬性。
protected override void RenderContents(HtmlTextWriter writer)
{
// 付款方式列
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(PaymentMethod);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Id, PaymentMethodListId);
writer.AddAttribute(HtmlTextWriterAttribute.Name, PaymentMethodListName);
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Select);
// Option 項目...
writer.RenderEndTag(); // Select
writer.RenderEndTag(); // Td
writer.RenderEndTag(); // Tr
// 信用卡號、持卡人、有效期、提交按鈕...
// 使用 HtmlTextWriterTag、HtmlTextWriterAttribute、HtmlTextWriterStyle 列舉
// 確保標準合規與瀏覽器相容
}
使用強型別列舉而非字串硬編碼,編譯期即可檢測錯誤,且 HtmlTextWriter 會根據瀏覽器自動調整輸出格式,解決跨瀏覽器相容性問題。