ASP.NET中TextBox控件设置ReadOnly=true后台取不到值
當 TextBox設置了ReadOnly="true" 后,如果在前臺為控件添加了值,后臺是取不到的,值為“空”
道理沒想通,說不清楚微軟是出于什么推敲的,?
不過有時是要我們能經由過程前臺腳底本填充值,并不欲望用戶批改其控件內容,這時就斗勁難堪了。
剛開端是換成Html 里的 <input type="text" readonly="readonly" > ,不過后來發明這個工作量是很大的,
所以網上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不干預干與題還算解決了。
正文:
出于vs2005對頁面代碼的規范與安然,小我定見是應用第二種辦法
知道為什么TextBox設置了ReadOnly屬性后,取不到值道理的,給下申明,感謝啦!
在.NET 2.0 下,當頁面上的某個TextBox?設置了屬性ReadOnly="True"時,經由過程客戶端腳本給其賦值后,在后臺代碼中接見其Text屬性卻無法獲得該值。經過測驗測驗,發明可以經由過程如下的體式格式解決這個題目:
辦法一:不設置ReadOnly屬性,經由過程οnfοcus=this.blur()來模仿,如下:
<asp:TextBox?ID="TextBox1"runat="server"onfocus=this.blur()></asp:TextBox>在此景象下,當文本框獲得核心時便立即落空,所以也無法手動批改其內容,可以或許模仿ReadOnly,在后臺代碼中也能經由過程Text屬性,正常獲取經由過程腳本在客戶端設置的值;
辦法二:設置了ReadOnly屬性后,經由過程Request來取值,如下:
前臺代碼:
<asp:TextBox?ID="TextBox1"runat="server"ReadOnly="True"?></asp:TextBox>后臺代碼:?
string Text = Request.Form["TextBox1"].Trim();辦法三:在Page_Load()正設置文本框的只讀屬性,在前臺不設置。就能正常讀取,如下:
protected?voidPage_Load(objectsender,?EventArgs?e){if?(!Page.IsPostBack){????????????TextBox1.Attributes.Add("readonly","true");
????????}
????}
總結
以上是生活随笔為你收集整理的ASP.NET中TextBox控件设置ReadOnly=true后台取不到值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL 日期格式 问题
- 下一篇: 开立股票账户有年龄限制吗