天天看點

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屬性,經由過程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,如需轉載請自行聯系原作者

繼續閱讀