.NET中TextBox控件設置ReadOnly=true后臺取不到值三種解決方法
更新時間:2013年02月20日 17:18:53 作者:
當TextBox設置了ReadOnly=true后要是在前臺為控件添加了值,后臺是取不到的,值為空,多么郁悶的一個問題經(jīng)過嘗試,發(fā)現(xiàn)可以通過如下的方式解決這個問題.感興趣的朋友可以了解下
當TextBox設置了ReadOnly="true" 后,要是在前臺為控件添加了值,后臺是取不到的,值為“空”
原理沒想通,說不清楚微軟是出于什么考慮的,不過有時是要我們能通過前臺腳本來填充值,并不希望用戶修改其控件內容,這時就比較尷尬了。
剛開始是換成Html 里的 <input type="text" readonly="readonly" > ,不過后來發(fā)現(xiàn)這個工作量是很大的, 所以網(wǎng)上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不過問題還算解決了。
正文:
出于vs2005對頁面代碼的規(guī)范與安全,個人意見是使用第二種方法
知道為什么TextBox設置了ReadOnly屬性后,取不到值原理的,給下說明,謝謝啦!
在.NET 2.0 下,當頁面上的某個TextBox 設置了屬性ReadOnly="True"時,通過客戶端腳本給其賦值后,在后臺代碼中訪問其Text屬性卻無法獲得該值。經(jīng)過嘗試,發(fā)現(xiàn)可以通過如下的方式解決這個問題:
方法一:不設置ReadOnly屬性,通過onfocus=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 void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox1.Attributes.Add("readonly","true");
}
}
原理沒想通,說不清楚微軟是出于什么考慮的,不過有時是要我們能通過前臺腳本來填充值,并不希望用戶修改其控件內容,這時就比較尷尬了。
剛開始是換成Html 里的 <input type="text" readonly="readonly" > ,不過后來發(fā)現(xiàn)這個工作量是很大的, 所以網(wǎng)上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不過問題還算解決了。
正文:
出于vs2005對頁面代碼的規(guī)范與安全,個人意見是使用第二種方法
知道為什么TextBox設置了ReadOnly屬性后,取不到值原理的,給下說明,謝謝啦!
在.NET 2.0 下,當頁面上的某個TextBox 設置了屬性ReadOnly="True"時,通過客戶端腳本給其賦值后,在后臺代碼中訪問其Text屬性卻無法獲得該值。經(jīng)過嘗試,發(fā)現(xiàn)可以通過如下的方式解決這個問題:
方法一:不設置ReadOnly屬性,通過onfocus=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 void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox1.Attributes.Add("readonly","true");
}
}
相關文章
CHECKBOX 的全選、取消及跨頁保存的實現(xiàn)方法
CHECKBOX的操作在頁面中很常見,比如全選、取消、跨頁保存等等,下面有個不錯的示例,大家可以嘗試操作下2013-10-10jQuery Data Linking 對象與對象之間屬性的關聯(lián)
ASP.NET團隊最近還向jQuery社區(qū)提交了被稱為data linking的技術,Data Linking可以幫助你實現(xiàn)對象與對象之間屬性的關聯(lián)——當其中一方發(fā)生改變時另一方也隨之改變。2010-12-12swagger上傳文件并支持jwt認證的實現(xiàn)方法
今天通過本文給大家分享swagger上傳文件并支持jwt認證的實現(xiàn)方法,文中提到了安裝方法及實現(xiàn)代碼,感興趣的朋友跟隨腳本之家小編一起學習吧2018-05-05解析WPF實現(xiàn)音頻文件循環(huán)順序播放的解決方法
本篇文章是對WPF實現(xiàn)音頻文件循環(huán)順序播放的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05.NET Core類庫System.Reflection.DispatchProxy實現(xiàn)簡易Aop的方法
這篇文章主要給大家介紹了關于.NET Core類庫System.Reflection.DispatchProxy實現(xiàn)簡易Aop的相關資料,文中通過示例代碼結束的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-12-12在ASP.NET中用MSDNURLRewriting實現(xiàn)Url Rewriting
在ASP.NET中用MSDNURLRewriting實現(xiàn)Url Rewriting...2007-03-03Visual Studio Debug實戰(zhàn)教程之基礎入門
這篇文章主要給大家介紹了關于Visual Studio Debug實戰(zhàn)教程之基礎入門的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-09-09