ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類淺析
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽是如何實現(xiàn)的呢?下面開始我們的步驟:
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽1.
盡量使用內(nèi)置的方法輸出標簽
寫過控件的人沒有人會說沒用過Render和RenderContents方法,其中關鍵的類就是用HtmlTextWriter類的一些方法把html標簽呈現(xiàn)出來,但其寫法不同,效果卻相同。如輸出一個下拉框:
- public class DemoControl : Control
- {
- protected override void Render(HtmlTextWriter writer)
- {
- //1.以輸出字符串形式輸出html
- /**//*
- writer.Write("<select>");
- writer.Write("<option value='0'>asp.net</option>");
- writer.Write("<option value='1'>asp.net ajax</option>");
- writer.Write("</select>");
- */
- //2.用.net內(nèi)置推薦的方法輸出html
- writer.RenderBeginTag(HtmlTextWriterTag.Select);
- writer.AddAttribute(HtmlTextWriterAttribute.Value, "0");
- writer.RenderBeginTag(HtmlTextWriterTag.Option);
- writer.Write("asp.net");
- writer.RenderEndTag();
- writer.AddAttribute(HtmlTextWriterAttribute.Value, "1");
- writer.RenderBeginTag(HtmlTextWriterTag.Option);
- writer.Write("asp.net ajax");
- writer.RenderEndTag();
- }
- }
當你熟悉這些方法后,請盡量使用這些方法
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽2.
分段呈現(xiàn)標簽
此方法等于為重構,當標簽呈現(xiàn)的比較多,請不要一步到底的寫下來,分部把需要的東西寫在各個方法里面再組合,
如http://www.cnblogs.com/Clingingboy/archive/2006/07/30/463471.html的示例三,說實話的,雖然用HtmlTextWriter的函數(shù)輸出標簽,但還不如直接輸出字符串來的明白,一大堆的RenderBeginTag和RenderEndTag方法。請分段呈現(xiàn)標簽,分拆函數(shù)。然后以Render開頭的函數(shù)命名,這樣看起來就清晰多了。
- protected override void Render(HtmlTextWriter writer)
- {
- RenderTable(writer);
- }
- private void RenderTable(HtmlTextWriter writer)
- {
- writer.AddStyleAttribute(HtmlTextWriterStyle.BorderWidth, "0");
- writer.RenderBeginTag(HtmlTextWriterTag.Table);
- RnderPaymentMethod(writer);
- RenderCreditCardNo(writer);
- RenderCardholderName(writer);
- RenderExpirationDate(writer);
- RenderSubmitButton(writer);
- writer.RenderEndTag();
- }
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽3.
規(guī)范標簽ID命名
不要把控件的頭標簽把ID名字定死,防止名字重疊,可以把Control的UniqueID屬性賦給ID屬性,子標簽也一樣??梢砸愿笜撕灥膇d為前綴,然后再加以命名。另外的好處就是可以跟前端交互,靈活性增強。
- //writer.AddAttribute(HtmlTextWriterAttribute.Id, "select1");
- writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID);
- writer.RenderBeginTag(HtmlTextWriterTag.Select);
- //以父標簽的id為前綴
- writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID+"_asp");
- writer.RenderBeginTag(HtmlTextWriterTag.Option);
- writer.Write("asp.net");
- writer.RenderEndTag();
- writer.RenderEndTag();
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽4.
判斷輸出動態(tài)屬性
如TextBox的Text屬性,當其屬性未設置時,呈現(xiàn)出來的標簽value屬性不呈現(xiàn),即后端要判斷,不然則要呈現(xiàn)value=""這項工作比較繁瑣。
- string text = this.Text;
- if (text.Length > 0)
- {
- writer.AddAttribute(HtmlTextWriterAttribute.Value, text);
- }
暫時就這些,想到再補充。不想把別的寫進去。以后分開寫。大家想到再補充。
ASP.NET控件開發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標簽的實現(xiàn)就向你介紹到這里,希望對你有所幫助。
【編輯推薦】