四模网站,做网站管理员开会怎么演讲,做网站开发的有哪些公司,毕业设计代做网站机械最近在完善个项目#xff0c;发现个小问题
当 TextBox设置了ReadOnlytrue 后#xff0c;要是在前台为控件添加了值#xff0c;后台是取不到的#xff0c;值为“空”。
有时是要我们能通过前台脚本来填充值#xff0c;并不希望用户修改其控件内容。
原因及… 最近在完善个项目发现个小问题
当 TextBox设置了ReadOnlytrue 后要是在前台为控件添加了值后台是取不到的值为“空”。
有时是要我们能通过前台脚本来填充值并不希望用户修改其控件内容。
原因及解决方案 从vs2003升级到vs2005的一个问题: 只读文本框(readonly textbox)不能在客户端修改值原因及解决办法 一、先做一个简单的实验 在vs2003中 新建一个网页 拖上一个textbox 将它的readonly 设成true 然后再放一个input: button 给它写代码: document.getElementById(txt1).valuetest; 再放一个服务器端的button, 不用写代码.。 好了开始运行点击客户端按钮会发现textbox 的值变成了test然后再点服务器端按钮使页面回传值仍然在也就是说服务器端的 txt1.Text 属性已经被成功更新了 事实上这时候如果在txt1.OnTextChanged 事件的处理器中下断点可以看到事件被触发了。 但是在vs2005中做同样的动作点击服务器端按钮使页面回传后textbox 的值就会丢掉给txt1.OnTextChanged 的处理器下断点发现事件没有被触发。如果readonly 为false则服务器端的值被更新。 二、问题原因 作为一个很清楚web开发潜在安全风险的人来说这个是.net2.0新增必要的安全举措。 如果一个控件在服务器上被标记成为readonly 在clr里面被设置为不可修改一段客户端脚本又怎么可以overide呢? 那不是出现重大安全隐患了么 为了解决上述安全问题在ASP.NET 2.0以后对于设置了只读属性的TEXTBOX回传数据将被舍弃。 三、解决办法 上述问题在vs 2005(ASP.NET 2.0)中的解决办法有 1、不要将textbox 设为readonly而是在pageLoad 中为其增加一个readonly attribute这样在客户端它仍是只读的但是在服务器的眼里它不是只读的。(未试。如果该方案可行这是最好的办法) 2、用input:text 或其它代替textbox。2.0后Input可以设置RunatServer。 3、在服务器端用Request.Form[txt1.UniqueID]可以取到更改后的值。
-------------------------------------------------------------------------------------------------- 在.NET 2.0 下当页面上的某个TextBox 设置了属性ReadOnlyTrue时通过客户端脚本给其赋值后在后台代码中访问其Text属性却无法获得该值。经过尝试发现可以通过如下的方式解决这个问题
1、不设置ReadOnly属性通过οnfοcusthis.blur()来模拟如下 asp:TextBox ID TextBox1 runat server onfocus this .blur() / asp:TextBox 在此情况下当文本框获得焦点时便立刻失去所以也无法手动修改其内容能够模拟ReadOnly在后台代码中也能通过Text属性正常获取通过脚本在客户端设置的值
2、设置了ReadOnly属性后通过Request来取值如下
前台代码 asp:TextBox ID TextBox1 runat server ReadOnly True / asp:TextBox 后台代码 string Text Request.Form[TextBox1].Trim(); 3、在Page_Load()正设置文本框的只读属性能正常读取如下 protected void Page_Load( object sender, EventArgs e) { if (!Page.IsPostBack) { TextBox1.Attributes.Add(readonly,true); } }