天天看點

textBox的readonly=true

  有時候,我們不希望使用者直接編輯textbox,而是希望通過用戶端腳本的方式來設定内容,一般的做法是設定textbox的屬性readonly為true。但在asp.net   2.0裡有了變化,設定了readonly為true的textbox,在伺服器端不能通過text屬性擷取在用戶端設定的新内容,在reflector裡比較一下loadpostdata的實作  

  .net   1.1中,  

  bool   ipostbackdatahandler.loadpostdata(string   postdatakey,   namevaluecollection   postcollection)  

  {  

              string   text1   =   this.text;  

              string   text2   =   postcollection[postdatakey];  

              if   (!text1.equals(text2))  

              {  

                          this.text   =   text2;  

                          return   true;  

              }  

              return   false;  

  }  

  .net   2.0中,  

  protected   virtual   bool   loadpostdata(string   postdatakey,   namevaluecollection   postcollection)  

              base.validateevent(postdatakey);  

              if   (!this.readonly   &&   !text1.equals(text2,   stringcomparison.ordinal))  

  就可以看出,如果設定了readonly為true,從用戶端傳回的新的值是不被設定到text屬性的。  

  想要保持.net   1.*中的行為,建議的做法是設定用戶端屬性contenteditable=false,參考  

  sysk   118:   readonly   or   contenteditable?  

  http://blogs.msdn.com/irenak/archive/2006/05/03/589085.aspx  

  其實如果是設定用戶端屬性的話,設定用戶端的readonly屬性應該也是可以的:  

  textbox1.attributes["readonly"]   =   "true";  

-----------------------------------------------------------------

我做的小程式們

【推薦】web版短信管理平台源碼

winform版短信管理平台源碼

移動短信程式源碼win服務版(cmpp3.0/cmpp2.0協定)

移動物聯網卡短信源碼(cmpp3.0協定,支援mssql/mysql資料庫)

c#實作聯通短信sgip協定程式源碼

c#實作電信短信smgp協定程式源碼

c#實作移動短信cmpp服務端程式源碼