當 TextBox設定了ReadOnly="true" 後,如果在前台為控件添加了值,背景是取不到的,值為“空”
道理沒想通,說不清楚微軟是出于什麼推敲的,
不過有時是要我們能經由過程前台腳底本填充值,并不欲望使用者批改其控件内容,這時就鬥勁難堪了。
剛開端是換成Html 裡的 <input type="text" readonly="readonly" > ,不過後來發明這個工作量是很大的,
是以網上搜了下,沒找出TextBox ReadOnly="true" 頁面填充值取不到的原因,不幹預幹與題還算解決了。
正文:
出于vs2005對頁面代碼的規範與安然,小我定見是應用第二種辦法
知道為什麼TextBox設定了ReadOnly屬性後,取不到值道理的,給下申明,感謝啦!
在.NET 2.0 下,當頁面上的某個TextBox 設定了屬性ReadOnly="True"時,經由過程用戶端腳本給其指派後,在背景代碼中接見其Text屬性卻無法獲得該值。經過測驗測驗,發明可以經由過程如下的體式格式解決這個題目:
辦法一:不設定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");
}
}
本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2012/03/21/2409382.html,如需轉載請自行聯系原作者