新聞中心
ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽是如何實(shí)現(xiàn)的呢?下面開(kāi)始我們的步驟:

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、東港網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東港等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽1.
盡量使用內(nèi)置的方法輸出標(biāo)簽
寫(xiě)過(guò)控件的人沒(méi)有人會(huì)說(shuō)沒(méi)用過(guò)Render和RenderContents方法,其中關(guān)鍵的類就是用HtmlTextWriter類的一些方法把html標(biāo)簽呈現(xiàn)出來(lái),但其寫(xiě)法不同,效果卻相同。如輸出一個(gè)下拉框:
- public class DemoControl : Control
- {
- protected override void Render(HtmlTextWriter writer)
- {
- //1.以輸出字符串形式輸出html
- /**//*
- writer.Write("
- writer.Write("");
- writer.Write("");
- writer.Write("");
- */
- //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();
- }
- }
當(dāng)你熟悉這些方法后,請(qǐng)盡量使用這些方法
ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽2.
分段呈現(xiàn)標(biāo)簽
此方法等于為重構(gòu),當(dāng)標(biāo)簽呈現(xiàn)的比較多,請(qǐng)不要一步到底的寫(xiě)下來(lái),分部把需要的東西寫(xiě)在各個(gè)方法里面再組合,
如http://www.cnblogs.com/Clingingboy/archive/2006/07/30/463471.html的示例三,說(shuō)實(shí)話的,雖然用HtmlTextWriter的函數(shù)輸出標(biāo)簽,但還不如直接輸出字符串來(lái)的明白,一大堆的RenderBeginTag和RenderEndTag方法。請(qǐng)分段呈現(xiàn)標(biāo)簽,分拆函數(shù)。然后以Render開(kāi)頭的函數(shù)命名,這樣看起來(lái)就清晰多了。
- 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控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽3.
規(guī)范標(biāo)簽ID命名
不要把控件的頭標(biāo)簽把ID名字定死,防止名字重疊,可以把Control的UniqueID屬性賦給ID屬性,子標(biāo)簽也一樣??梢砸愿笜?biāo)簽的id為前綴,然后再加以命名。另外的好處就是可以跟前端交互,靈活性增強(qiáng)。
- //writer.AddAttribute(HtmlTextWriterAttribute.Id, "select1");
- writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID);
- writer.RenderBeginTag(HtmlTextWriterTag.Select);
- //以父標(biāo)簽的id為前綴
- writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID+"_asp");
- writer.RenderBeginTag(HtmlTextWriterTag.Option);
- writer.Write("asp.net");
- writer.RenderEndTag();
- writer.RenderEndTag();
ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽4.
判斷輸出動(dòng)態(tài)屬性
如TextBox的Text屬性,當(dāng)其屬性未設(shè)置時(shí),呈現(xiàn)出來(lái)的標(biāo)簽value屬性不呈現(xiàn),即后端要判斷,不然則要呈現(xiàn)value=""這項(xiàng)工作比較繁瑣。
- string text = this.Text;
- if (text.Length > 0)
- {
- writer.AddAttribute(HtmlTextWriterAttribute.Value, text);
- }
暫時(shí)就這些,想到再補(bǔ)充。不想把別的寫(xiě)進(jìn)去。以后分開(kāi)寫(xiě)。大家想到再補(bǔ)充。
ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類規(guī)范輸出標(biāo)簽的實(shí)現(xiàn)就向你介紹到這里,希望對(duì)你有所幫助。
網(wǎng)頁(yè)名稱:ASP.NET控件開(kāi)發(fā)技巧之使用HtmlTextWriter類淺析
文章鏈接:http://m.fisionsoft.com.cn/article/djosshg.html


咨詢
建站咨詢
