Asp.net
如何將自定義控制項的呈現行為從跨度更改為
編寫自定義控制項時,它始終呈現為 HTML span 元素。例如,如何將其更改為 div?
從 WebControl 派生控制項,如下所示:
public class MyCustomControl : WebControl { public MyCustomControl() : base(HtmlTextWriterTag.Div) {} }也就是說,使用接受要使用的標記的基類建構子。
如果您從 CompositeControl 派生,則沒有採用標記類型的建構子。您可以覆蓋 TagKey(我沒有嘗試過),但更靈活的選擇是覆蓋 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 只是為了使輸出更容易被發現。