接下來會簡單介紹一些常見的server control,以及一些額外在開發上需要注意的事項。
這一篇文章先簡單介紹一下Label。
在開始介紹之前,我想先推薦幾個Reference,供大家參考,尤其是不知道server control的屬性、事件、方法或是適用情況與寫法時,可以參考一下:
1.MSDN文件庫
2.Visual Studio裡面的物件瀏覽器
3.MSDN forum
Label的介紹:
1.MSDN官方網站說明:MSDN 文件庫 reference
2.屬性:
Text,呈現的文字
3.HTML tag:<span>
4.一般用途:用來顯示文字,也有人會拿來Render HTML,其他也會拿來呈現文字或HTML的還有 Literal與PlaceHolder,他們的差異是:Literal與PlaceHolder不會顯示HTML tag,但要小心Cross-site scripting(XSS)。可參考:[HOW TO:利用將 HTML 編碼套用至字串的方法,防止會在 Web 應用程式中發生的指令碼攻擊](http://msdn.microsoft.com/zh-tw/library/a2a4yykt(v=VS.80).aspx<br />
),以及擅用指令碼概觀
5.注意:
在client端使用JavaScript修改Label內的文字,server端無法得知,用JavaScript修改後,postback後值會被還原,因為沒有使用ViewState記值。
解決方式:透過hidden暫存修改後的值,再assign回Text。可參考:[http://www.dotblogs.com.tw/hatelove/archive/2009/02/12/7125.aspx ](http://www.dotblogs.com.tw/hatelove/archive/2009/02/12/7125.aspx )
最後,請想學習的客倌,看完這篇文章思考一下,下列的問題該如何回答:
1.Label對應的HTML tag為何?
2.Label通常用在哪些地方?
3.Label與其他呈現HTML的server control差異在哪?
4.Label與JavaScript搭配時,需要注意什麼?
5.Label在呈現HTML時,可能會有什麼樣的問題?該怎麼避免?
請問一下,學習 Server Control 時,為什麼要知道它的 HTML tag ? 我發現不同的屬性設定會造成 Server Control 產生不同的 HTML tag。以 Label 為例,它平常產生的是<span>,但是如果設定了AssociatedControlID屬性後,就會產生<label>,了解這些不同會有幫助嗎?
因為最後都是Render成HTML tag,當有些時候Server Control無法完全滿足我們,HTML control又少了很多我們所需要用的屬性或方法時,瞭解最後生成的HTML會是最根本的解決方式。
尤其近年來jQuery等client script framework越來越盛行,加上有很多人家包裝好很炫很華麗的plugin,這些東西都是使用JavaScript針對HTML的DOM來做事的,當我們需要將這些plugin加載到我們的頁面時,我們就得知道對應的HTML長什麼樣子,會不會有互相影響的可能性。
另外,因為server control將東西都包的好好的,相對的也就是要修改它的內部邏輯或呈現,是一件困難的事。幾乎只能透過繼承+覆寫,或是整個自訂控制項重新設計來達到所謂的彈性。而且當畫面出現不是我們所想像的結果時,通常都是需要檢視原始檔來與.aspx上的原始碼來做比較。最後Render出來的HTML都會是一切的基底囉 :)