JS修改服務端控件后,在服務端取值 .


轉自: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"); 
    } 
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM