昨天陈建新反映经费报销表填写时出错,一调试发现,所有的TextBox控件,当ReadOnly=True时,在服务器端通过ControlName.Text取不到值了。 之前都是可以的呀,一查资料,据说由于安全原因,所以ViewState不再保存只读控件的值。 http://lab.msdn.microsoft.com/productfeedback/ViewWorkaround.aspx?FeedbackID=FDBK26540#3 解决方法有以下几种: 1 把控件改为Lable 类型 2 取值语句改为:Request.Form[”ControlName”] 3 不再设置控件属性,而是在代码中填加:ControlName.Attributes["readonly"] = "true"; 虽然设成只读了,还要去取值本身就是一种矛盾的行为,不应该提倡,但是我觉得在某些情况下还是需要这么做,比如: 用户资料的管理,如果是普通用户,则只能改部分资料,而权限高的可以改所有的。这时,通过控件TextBox的ReadOnly实现会比较方便。 奇怪的是刚才我新建了一个页面,用asp.net2.0的控件。就没有这个问题了。 看来这是aspnet2.0与aspnet1.1兼容性上的一个问题
posted on 2009-06-03 14:35  Madream.F  阅读(280)  评论(0编辑  收藏  举报