轉自:http://blog.csdn.net/zyaln/article/details/3464892
客戶端用js改變asp.net控件的值,在服務器端不能直接用xx.Text獲取到改變后的值,這是因為asp.net web頁面數據是保存在ViewState里的,在客戶端修改了內容,ViewSate沒有修改。所以到服務器還是讀舊數據。
1.
用<input type=hidden id="hd_value" runat="server"/>Hidden在客戶端改變數據能在服務器端讀到改后的數據。或者使用<asp:HiddenField ID="hfProductCategoryID" runat="server" /> 客戶端改變var hfID="<%=this.hfProductCategoryID.ClientID %>" 服務端可以用hfProductCategoryID.Text取到
2.
string s1=Request.Form.Get(ddlProvince.UniqueID);
string s2 = Request[ddlProvince.UniqueID];
這樣也可以取到,ddlProvince.UniqueID實際上就是ddlProvince在客戶端的name屬性值
假如服務器控件名為txtbox1,
VS2005中,可以這樣取值:
string str = Request.Form[txtbox1.UniueID];
轉自:http://www.cnblogs.com/qiaohd/archive/2012/03/23/2413660.html
開發一個asp.net的頁面遇到了TextBox設置了ReadOnly屬性,在js中賦值后,后台代碼取不到值的情況,經過在網上查找,找到了一下幾個處理辦法。
收藏起來。
1、不設置ReadOnly,設置onfocus=this.blur()
C#代碼
<asp:TextBox ID="TextBox1" runat="server" onfocus=this.blur()></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server" onfocus=this.blur()></asp:TextBox>
文本框不變灰色,但也無法手動修改內容,可以在后台通過Text屬性正常賦值取值
2、設置了ReadOnly屬性后,通過Request來取值,如下:
前台代碼:
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True" ></asp:TextBox>
<asp:TextBox ID="TextBox1" runat="server" ReadOnly="True" ></asp:TextBox>
后台代碼:
string Text = Request.Form["TextBox1"].Trim();
string Text = Request.Form["TextBox1"].Trim();
3、在Page_Load()正設置文本框的只讀屬性,能正常讀取,如下:
C#代碼
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox1.Attributes.Add("readonly","true");
}
}