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

posted @ 2013-01-24 20:37  nd  阅读(3513)  评论(0编辑  收藏  举报