asp:TextBox 的ReadOnly属性 造成后台无法取到值

估计是只读原因造成的,于是在网上找解决办法,找到如下资料

 

Note重要事项:

发生回发时,TextBox 控件(其 ReadOnly 属性设置为 true)的 Text 值被发送到服务器,但是服务器不处理只读文本框。这样可以防止恶意用户更改只读的 Text 值。在回发之间,Text 属性的值保留在视图状态中,除非经过服务器端代码修改。

服务器端 ViewState 中虽然含有 TextBox.Text 值,但是默认没有做解析,因此无法取到。

有下面几个思可有解决:

1. 在后台代码中添加自个儿的解析代码,把值从 ViewState 里取出来赋给 Text 属性(没试过,应该可以);
2. 换用别的文本框控件,比如 input 什么的;
3. 不要直接在标记声明中使用readonly属性,改为通过在后台代码中用txtBox1.Attributes["readonly"] = "true"来设置,或js中用document.all("txtBox1").readOnly=true;(没错这样就可以,因为后台认定一个 TextBox 是否只读是在编译时发生的)

posted on 2010-03-04 16:55  fery  阅读(407)  评论(0编辑  收藏  举报