原創(chuàng)|其它|編輯:郝浩|2010-05-04 10:36:20.000|閱讀 931 次
概述:在可視化編程中,控件屬性的管理至關(guān)重要。可以這么說(shuō),控件屬性設(shè)置的合不合適,直接關(guān)系到應(yīng)用程序的成敗,而且對(duì)用戶界面的友好性也有很大的影響。由于不同的控件具有不同的屬性,為此管理起來(lái)有一定的難度。在這篇文章中,筆者就針對(duì)這一塊內(nèi)容談?wù)勛约旱母惺堋?
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
在可視化編程中,控件屬性的管理至關(guān)重要。可以這么說(shuō),控件屬性設(shè)置的合不合適,直接關(guān)系到應(yīng)用程序的成敗,而且對(duì)用戶界面的友好性也有很大的影響。由于不同的控件具有不同的屬性,為此管理起來(lái)有一定的難度。在這篇文章中,筆者就針對(duì)這一塊內(nèi)容談?wù)勛约旱母惺堋?/p>
一、HTML控件的歸類(lèi)。
為了便于管理,在VisualStudio平臺(tái)中對(duì)HTML控件進(jìn)行了分類(lèi),主要分為兩類(lèi):容器控件和輸入控件。這是HTML控件的兩個(gè)子集,他們分別有不同基類(lèi)的屬性。在講述具體的操作與設(shè)置之前,先要記住一個(gè)原則性的內(nèi)容,即在任何一個(gè)HTML控件上聲明的任何屬性都會(huì)被添加到這個(gè)控件的Attributes集合中,并且可以像屬性那樣以編程方式對(duì)其進(jìn)行操作。
這是什么意思呢?舉例來(lái)說(shuō)。現(xiàn)在需要更改某個(gè)元素上的某個(gè)屬性。此時(shí)開(kāi)發(fā)人員可以通過(guò)編寫(xiě)程序的方式來(lái)更改這個(gè)屬性的值。不過(guò)其最終的內(nèi)容還是會(huì)在Attributes集合中體現(xiàn)出來(lái)。也就是說(shuō),無(wú)論通過(guò)什么方式更改,開(kāi)發(fā)人員在VisualStudio平臺(tái)中都可以通過(guò)查看這個(gè)集合來(lái)了解某個(gè)控件屬性的最新消息。
二、所有HTML控件都具有的屬性。
有些屬性是所有的HTML控件(包括容器控件和輸入控件)都具有的。中的來(lái)說(shuō),有四個(gè)屬性。這幾個(gè)屬性也是我們平時(shí)用的最多的。
第一個(gè)是Disabled屬性。這個(gè)屬性主要用來(lái)獲取或者設(shè)置一個(gè)值。該值指示在瀏覽器上呈現(xiàn)HTML空間時(shí)是否包含Disabled屬性。如果有這個(gè)屬性的話,這將這個(gè)控件設(shè)置為只讀控件。這是微軟官方網(wǎng)站上對(duì)這個(gè)屬性的定義。簡(jiǎn)單的說(shuō),就是設(shè)置某個(gè)空間是否為可用。在實(shí)際工作中,這個(gè)屬性經(jīng)常會(huì)用到。
如上圖所示,這是筆者開(kāi)發(fā)的一個(gè)股票交易模擬軟件。在上圖中最下方的“買(mǎi)入下單”按鈕,它就是一個(gè)控件。注意在買(mǎi)入價(jià)格與買(mǎi)入數(shù)量為空的情況下,這個(gè)空間是灰色的,表示其不可用。當(dāng)買(mǎi)入價(jià)格與買(mǎi)入數(shù)量文本框中有內(nèi)容的時(shí)候,這個(gè)控件就會(huì)變?yōu)榭捎谩_@個(gè)特性就是根據(jù)“Disable”這個(gè)屬性來(lái)控制的。實(shí)現(xiàn)的方法很簡(jiǎn)單。當(dāng)鼠標(biāo)的焦點(diǎn)離開(kāi)買(mǎi)入數(shù)量文本框的時(shí)候,判斷一下這個(gè)文本框中是否有對(duì)應(yīng)的內(nèi)容。如果有的話,就更改“買(mǎi)入下單”這個(gè)控件的Disable屬性的值。更改后,這個(gè)控件就變?yōu)榭捎昧恕?/p>
在應(yīng)用程序開(kāi)發(fā)中,這種技巧經(jīng)常使用。主要就是為了防止用戶的誤操作,提高用戶界面的友好性。所以開(kāi)發(fā)人員對(duì)于這個(gè)屬性要徹底掌握。
第二個(gè)屬性是Visible。這個(gè)特性跟第一個(gè)屬性有點(diǎn)相似,只是其表現(xiàn)的方式不同。其主要用來(lái)控制某個(gè)控件的可見(jiàn)性,即是否顯示在頁(yè)面上。在實(shí)際工作中,這個(gè)主要用在權(quán)限控制上。如現(xiàn)在有個(gè)銷(xiāo)售訂單的頁(yè)面,銷(xiāo)售人員可以看到產(chǎn)品的單價(jià),并對(duì)其進(jìn)行修改。倉(cāng)庫(kù)人員雖然可以查看訂單信息,但是卻不能夠看到訂單上的價(jià)格。此時(shí)就可以通過(guò)Visible屬性來(lái)實(shí)現(xiàn)。在窗口打開(kāi)的時(shí)候,需要判斷一下當(dāng)前用戶的角色。如果用戶的角色為“倉(cāng)庫(kù)角色”的話,則將這個(gè)銷(xiāo)售訂單窗口的價(jià)格文本框控件的Visible屬性設(shè)置為“False”,此時(shí)這個(gè)控件就不會(huì)在頁(yè)面上顯示。相反,如果這個(gè)屬性的值為T(mén)rue的話,則就會(huì)顯示在頁(yè)面上。所以這個(gè)屬性與第一個(gè)屬性雖然本質(zhì)上的作用是相同的,都是為了控制用戶的某個(gè)操作。只是其表現(xiàn)形式不同。前一個(gè)屬性會(huì)把控件變?yōu)椴豢捎茫笠粋€(gè)屬性這會(huì)讓控件不顯示。但是兩則仍然有所不同。如前一個(gè)屬性,雖然控件變?yōu)榛疑豢捎昧耍强丶厦娴膬?nèi)容仍然有顯示。而第二個(gè)屬性就是根本不顯示控件的內(nèi)容。
為此在不同的情況下,開(kāi)發(fā)人員要選擇使用不同的屬性。如上面這個(gè)價(jià)格的案例,如果倉(cāng)庫(kù)人員不能夠看到價(jià)格,那么就需要使用Visible屬性。但是如果倉(cāng)庫(kù)人員可以看到價(jià)格,只是不能夠?qū)ζ溥M(jìn)行修改,那么就需要使用Disable屬性。簡(jiǎn)單的說(shuō),Disable屬性用來(lái)控制控件是否可以修改(是否可用);而Visible控件則用來(lái)控制控件是否在頁(yè)面上顯示。
這兩個(gè)屬性是所有的HTML控件都具有的,也是使用的最頻繁的。除此之外,Style屬性和TagName屬性也是共有屬性,前者主要用來(lái)指定HT服務(wù)器控件的所有級(jí)聯(lián)樣式表屬性(即CSS),后者主要用來(lái)取得Runat屬性的標(biāo)記的元素名。這兩個(gè)屬性在使用的時(shí)候沒(méi)有特殊的技巧,筆者這里就不過(guò)多展開(kāi)了。
三、輸入控件的共有屬性。
首先是Value屬性。簡(jiǎn)單的說(shuō),這個(gè)就是用來(lái)設(shè)置或者獲取與輸入控件關(guān)聯(lián)的值。而實(shí)際上,其具體的內(nèi)容會(huì)根據(jù)上下文環(huán)境的不同而有所差異。如同樣是文本框,如果這個(gè)文本框允許更改,則這個(gè)屬性的值就是文本框中輸入的文本。但是如果在不允許輸入文本的文本框中(即文本框的屬性為只讀),則這個(gè)值就是控件中顯示的標(biāo)題。注意這個(gè)特系可能跟其他的開(kāi)發(fā)平臺(tái)也說(shuō)不通,開(kāi)發(fā)人員要注意識(shí)別。
其次是HTMLInputButton類(lèi)。顧名思義,這是一個(gè)按鈕類(lèi)型的控件。通過(guò)這個(gè)類(lèi),可以在網(wǎng)頁(yè)上創(chuàng)建按鈕控件。這個(gè)控件也有很多的屬性。如有些按鈕是跟某個(gè)表單聯(lián)系在一起的。如下圖所示,“同意并提交”按鈕就是一個(gè)表單中不可缺少的組成部分,此時(shí)就需要使用Type=Submit屬性。在有些表當(dāng)中還有一個(gè)“重置”按鈕。它的作用是將表單中所有控件的值設(shè)置為默認(rèn)的值,此時(shí)需要用到的屬性為T(mén)ype=Reset。其實(shí)開(kāi)發(fā)人員也可以通過(guò)使用普通的按鈕然后通過(guò)編寫(xiě)代碼來(lái)實(shí)現(xiàn)。但是使用這些合適的屬性,則可以免去編寫(xiě)代碼的麻煩。如使用Reset屬性的話,則可不需要編寫(xiě)更新表單中控件默認(rèn)值的代碼。
四、控件屬性使用時(shí)要兼顧安全。
在選用控件或者管理屬性的時(shí)候,除了要考慮到用戶有好性的同時(shí),還需要注意安全性。最簡(jiǎn)單的一個(gè)例子,就是用戶登錄框的設(shè)計(jì)。用戶需要輸入帳戶與密碼來(lái)登錄系統(tǒng)。此時(shí)為了安全起見(jiàn),但用戶輸入密碼信息的事后,需要以掩碼的信息顯示。如下圖所示,用戶在輸入密碼信息的時(shí)候,要使用掩碼(如符號(hào)*或者#等表示用戶輸入的密碼)。這可以防止用戶在輸入時(shí)被其他人無(wú)意或者有意中看到,從而影響到用戶數(shù)據(jù)的安全。
類(lèi)似的安全機(jī)制還有很多。如對(duì)于文本框的控件,為了有效防止嵌入式攻擊,往往需要對(duì)文本框中輸入的內(nèi)容進(jìn)行驗(yàn)證。如一般情況下,能夠不使用這個(gè)文本框的,就不要使用。如可以通過(guò)單選或者復(fù)選框、列表控件等等來(lái)代替文本框。如果確實(shí)需要用到文本框的話,也最好對(duì)其中輸入的內(nèi)容進(jìn)行驗(yàn)證。如能夠含有一些危險(xiǎn)的字符等等。在VisualStudio平臺(tái)中,還可以對(duì)文本類(lèi)型的字符串?dāng)?shù)據(jù)采用HTML編碼驗(yàn)證來(lái)防止嵌入式攻擊等等。
總之,在控件層面就做好安全設(shè)計(jì),這對(duì)于提高應(yīng)用程序以及后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)的安全,效果是很明顯的。當(dāng)然這會(huì)增加控件設(shè)計(jì)與管理的難度與復(fù)雜程度,但是筆者認(rèn)為,考慮到安全,權(quán)衡利弊之后,這還是值得的。因?yàn)楫?dāng)數(shù)據(jù)傳遞到后臺(tái),再來(lái)防止嵌入式攻擊的話,難度會(huì)更大。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載