[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day6 - Server Controls Introduction(2)

[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day6 - Server Controls Introduction(2)

前言
這篇要簡單介紹一下最常用的輸入項:TextBox。

TextBox的介紹:

  1. MSDN官方網站說明MSDN 文件庫 reference

     
  2. 常用屬性
    1. Text:文字方塊中的文字,內建ViewState記值,PostBack後會自動記住。
    2. MaxLength:限制使用者輸入的指定字元數。
    3. ReadOnly:唯讀,需注意某一種特別弔詭的唯讀情況,請參考黑暗執行緒的文章TextBox.ReadOnly、Attributes["readonly"]及Disabled ,以及另一篇MSDN forum 阿尼的研究
    4. TextMode:可改變Render出來的HTML tag。
    5. AutoPostBack:設定為true,會在HTML DOM的onchange事件,加上呼叫__doPostBack()的function,當一旦觸發onchange則postback,將form的資料submit回自己這一頁處理。


  3. 常用server端事件
    OnTextChanged,當TextBox的值與上一次的值有所改變時,即會觸發此事件。


  4. HTML tag,根據TextMode而有所不同
    1. SingleLine: <input type='text' />
    2. MultiLine: <textarea />
    3. Password: <input type='password' />


  5. 一般用途
    最常用的輸入項
    1. 搭配Validators進行Client端與Server端的驗證
    2. 外觀
      • Textbox的顯示寬度是由它的 Columns 屬性決定 (以字元為單位)。
      • TextBox 控制項是多行文字方塊,它所顯示的列數將由 Rows 屬性決定。
      • 若要顯示在 TextBox 控制項內換行的文字,應將 Wrap 屬性設定為 true。


  6. 注意
    1. TextMode=MultiLine時,MaxLength會失效,因為textarea無法使用MaxLength來限制輸入字元數。解決方式請參考:http://www.dotblogs.com.tw/hatelove/archive/2010/07/06/textarea_maxlength.aspx
    2. AutoPostBack=false時,並不代表不會觸發server端的OnTextChanged事件,而是等到有任何回到server端處理時,只要值與上一次的值比較後有改變,就會觸發server端的對應事件 (這也是ViewState為何給兩次postback使用,以及event-driven model的基底)

 


最後,請想學習的客倌,看完這篇文章思考一下,下列的問題該如何回答:

  1. TextBox對應的HTML tag有哪一些呢?是由哪一個屬性所控制呢?
  2. TextBox的寬度,列數,可輸入字元數的屬性分別為何?
  3. ReadOnly的注意事項
  4. 什麼時候會觸發server端的onTextChanged事件?
  5. MaxLength在textarea失效,該如何解決?
  6. 為什麼TextBox的值PostBack後不用處理,值仍然存在?

blog 與課程更新內容,請前往新站位置:http://tdd.best/