asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’

前端之家收集整理的这篇文章主要介绍了asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一些背景

所以我在Web应用程序中完成了一些增强功能,可以自动插入数据.用户填写了一些文本框,其中的其他文本框具有自动计算的值.接收自动计算值的文本框必须是readOnly以防止用户更改,但不能禁用或不会在回发时提交.这些文本框中的每一个旁边都有一个复选框,因此用户可以有意识地检查它以使字段可写,从而允许它们覆盖插值.

浏览器:IE 7(不确定这在其他人中的行为)

问题

使用JavaScript设置文本框的readOnly属性时,文本框中的值将以以下形式提交:我可以在服务器端(ASP.NET)使用myTextBox.Text查看它,它位于Request.Form(“myTextBox”)中.

如果我在我的< asp:TextBox />上设置ReadOnly =“true”在不使用JavaScript方法的情况下,文本框中的值不能从myTextBox.Text中获取(我假设它从未进入ViewState),但它是以表格形式提交的:Request.Form(“myTextBox” “)有一个价值.

我的问题

到底他妈发生了什么?这是设计的吗?这是一个浏览器问题吗?我找到了一个bug吗?令人讨厌的是,我必须有一些额外的JavaScript,以便在页面加载时最初禁用文本框的可写性,以使我的应用程序正常工作.

谢谢!

解决方法

这是设计的.作为ASP.NET安全功能,无论客户端发生什么,在服务器上将其设置为只读即可使其保持只读状态.如果您希望它们能够覆盖它并实际提交一个值,那么它在服务器上并不是真正的只读,只是在客户端上有条件地.您可以在选中复选框以更改服务器上的readonly属性时进行回发,也可以使用此ASP.NET代码仅在客户端上设置readonly属性
MyControl.Attributes.Add("readOnly","readOnly")

猜你在找的asp.Net相关文章