小心使用 asp:TextBox 的ReadOnly属性

探讨了ASP.NET中TextBox控件的只读属性在服务器端的行为特点,并提供了几种获取只读TextBox值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      曾经遇到过这样的问题:使用了一个只读的TextBox控件,但是在后台代码中却怎么也得不到其 Text 属性值。

后来偶然发现了问题所在,请看下面摘自msdn的一段话:

 

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 是否只读是在编译时发生的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值