溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解ASP.NET控件的開發(fā)

發(fā)布時(shí)間:2021-10-28 15:57:50 來源:億速云 閱讀:102 作者:柒染 欄目:編程語言

本篇文章為大家展示了如何理解ASP.NET控件的開發(fā),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

ASP.NET本身提供了很多控件,提供給我們這些比較懶惰的人使用,我認(rèn)為控件的作用就在此,因?yàn)槲覀儾幌胫貜?fù)工作,所以要?jiǎng)?chuàng)建它,這個(gè)本身便是一個(gè)需求的關(guān)系,所以學(xué)習(xí)ASP.NET控件開發(fā)很有意思.

現(xiàn)在還沒有出版,但網(wǎng)站上放出了代碼,所以正好下載過來學(xué)習(xí)一下.我看過前幾章代碼,環(huán)環(huán)相扣,作者用不同的知識(shí)向我們展示同一個(gè)效果,所以循序漸進(jìn)的學(xué)下來很有好處.雖然自己對(duì)ASP.NET控件開發(fā)還不是很熟悉,但我感覺以下幾點(diǎn)很重要,是我自己總結(jié)的

1.了解控件之間的繼承關(guān)系,***是先看看看System.Web.UI命名空間
(1)Control 類,所有的控件都共享的一個(gè)類,你需要去看下其里面受保護(hù)的幾個(gè)方法和屬性,雖然一下看不完,以后會(huì)發(fā)現(xiàn)常常用到這些方法大家可以在MSDN看一下其派生類
(2)HtmlTextWriter 類不得不了解的一個(gè)類,主要工作就是我們寫的標(biāo)記字符和文本輸出

2.重寫方法
(1) 必須繼承Control類
(2) 重寫Control類的Render方法,這個(gè)是必須的,因?yàn)槠渌丶祭^承了Control 類類,所以幾乎所有控件都有這個(gè)方法

3.熟悉元數(shù)據(jù)
大家都知道ASP.NET控件屬性在編輯器上是分類的,如外觀,行為,布局等,每個(gè)屬性還給出了解釋簡(jiǎn)單的元數(shù)據(jù)就是起到這個(gè)作用,當(dāng)然你也可以不加,但使用了元數(shù)據(jù)讓人感到有親切感,寫法如
下[CategoryAttribute("Appearance")]要使用元數(shù)據(jù),必須引用System.ComponentModel命名控件,一般你如果寫組件的話,不可能不用到這樣類庫。具體的MSDN上有所介紹。

一.輸出字符串

說多了沒意思,還是來演練吧。首先你得了解HTML。來看下面代碼,效果就是輸出HTML到客戶端

效果很簡(jiǎn)單,其實(shí)就一直在輸出HTML再加幾個(gè)屬性,大家可以直接把代碼放在App_Code文件夾里,就可自動(dòng)編譯,當(dāng)然也可以創(chuàng)建web控件庫.
注意要繼承Control類,重寫Render方法,用HtmlTextWriter類的Write輸出HTML

使用控件

(1).需要先注冊(cè)一下

<%@ Register TagPrefix="custom" Namespace="CustomComponents" %>

(2) 然后就使用標(biāo)簽輸出效果

<custom:CreditCardForm1 runat="server" ID="ccf" />

二.改善,加入屬性和元數(shù)據(jù)

可能上面做出的 控件毫無用處,但卻可以讓你熟悉一下步驟,上面的控件定的很死,沒有定義任何屬性,用處不大,下面來改造

我們來定義常用屬性,然后再輸出,這樣我們就可以修改控件的屬性了

三.再次改善,淘汰用Write方法以字符串的方式輸出HTML

接著我們繼續(xù)發(fā)現(xiàn)問題,我們發(fā)現(xiàn)我們除了定義幾個(gè)需要自己來修改的屬性外,還是要用來大量的字符串用來輸出HTML,而且容易輸錯(cuò).所以HtmlTextWriter類提供幾個(gè)有用的方法用來代替.
(1)AddStyleAttribute方法 為標(biāo)簽添加樣式屬性
(2)AddAttribute方法      為標(biāo)簽添加屬性
(3)RenderBeginTag        開始寫入標(biāo)簽頭 如<table....>
(4)RenderEndTag          寫入標(biāo)簽尾部,如</table>

這里有幾點(diǎn)需要特別注意.

1.因?yàn)槠涠x方式跟我們平時(shí)定義方式不同,我們平時(shí)寫HTML時(shí),是先寫標(biāo)簽開頭,再寫標(biāo)簽的屬性.如<table borderwidth="0">,然而我們?cè)谑褂蒙厦鎺讉€(gè)方法時(shí),需要有先后順序,我們需要先定義標(biāo)簽的屬性和樣式,然后再輸出標(biāo)簽頭.

2.標(biāo)簽頭和尾,需一一對(duì)應(yīng).可以理解為嵌套關(guān)系.***的理解方法就是輸出代碼后,查看源文件,再結(jié)合原來定義的代碼來看.

還是看代碼比較容易說明,由于CreditCardForm2已經(jīng)定義了我們需要的屬性,而我們現(xiàn)在要做的只是用標(biāo)簽的形式來替代字符串的形式,所以只需要繼承CreditCardForm2類,重寫Render方法即可

四.未使用視圖狀態(tài)的后果

還是視圖狀態(tài),關(guān)于視圖狀態(tài)大家可以參考MSDN和相關(guān)文章

看以下的示例,還是CreditCardForm3這個(gè)控件

if(!IsPostBack)  {  creditcardform.CardholderNameText="FullName";  creditcardform.CreditCardNoText="CreditCardNo";  creditcardform.ExpirationDateText="ExpirationDate";  creditcardform.PaymentMethodText="PaymentOptions";  creditcardform.SubmitButtonText="Send";

上述內(nèi)容就是如何理解ASP.NET控件的開發(fā),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI