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