Asp.net

如何將自定義控制項的呈現行為從跨度更改為

  • April 2, 2022

編寫自定義控制項時,它始終呈現為 HTML span 元素。例如,如何將其更改為 div?

從 WebControl 派生控制項,如下所示:

public class MyCustomControl : WebControl {
   public MyCustomControl() : base(HtmlTextWriterTag.Div) {}
}

也就是說,使用接受要使用的標記的基類建構子。

如果您從 CompositeControl 派生,則沒有採用標記類型的建構子。您可以覆蓋 Tag​​Key(我沒有嘗試過),但更靈活的選擇是覆蓋 RenderBeginTag 方法並使其執行您想要的操作。基類呈現一個“span”打開元素,但您不必呼叫基類方法。如果您不想渲染任何內容,則無需呼叫任何內容(在這種情況下,還要覆蓋 RenderEndTag 並且也不在那裡呼叫任何內容)。例如,

public override void RenderBeginTag(HtmlTextWriter writer)
   {
       writer.AddAttribute(HtmlTextWriterAttribute.Class, "reportViewer");
       writer.AddAttribute(HtmlTextWriterAttribute.Id, "QueryViewerWrapper");
       writer.RenderBeginTag(HtmlTextWriterTag.Div); 
   }

此程式碼產生

<div class="reportViewer" id="QueryViewerWrapper">

這正是我的這個特定複合控制項所需要的,一個帶有類的 div 來包裝 ReportViewer 控制項。我包含 ID 只是為了使輸出更容易被發現。

引用自:https://stackoverflow.com/questions/1084311