为啥只读文本框在 ASP.NET 中不返回任何数据?
Posted
技术标签:
【中文标题】为啥只读文本框在 ASP.NET 中不返回任何数据?【英文标题】:Why does a read-only textbox not return any data in ASP.NET?为什么只读文本框在 ASP.NET 中不返回任何数据? 【发布时间】:2010-10-24 10:46:56 【问题描述】:我已将文本框设置为只读。当用户点击它时,会显示一个日历,用户选择输入到只读文本框中的日期。
但是当我尝试将数据输入数据库时,它显示空值。怎么了?
【问题讨论】:
【参考方案1】:对于 ASP.NET 的 Readonly
属性和 html 输入元素的 readonly
属性,有一点奇怪。与其设置 Web 控件的 Readonly
属性,不如尝试简单地将 HTML 属性添加到控件,如下所示:
textBox.Attributes.Add("readonly", "readonly");
这将使该控件在客户端浏览器中为只读,但仍允许您在输入回传到服务器时检索输入的值。
【讨论】:
难以置信!今晚我在这个麻烦上浪费了 2 个小时……该死! 还是不行。简单的错误:必须清除浏览器的缓存才能重新加载新代码 太棒了!完美运行! 对我不起作用!仍然无法从文本框中获取价值 伟大的@Andrew...非常优雅的解决方案。【参考方案2】:系统假定只读或禁用控件不会在客户端更改,因此它不会将更改后的值发布回服务器。您需要设置客户端只读属性而不是服务器端版本。
【讨论】:
就像一个注释 - 实际上这些值是由用户浏览器发布到服务器的,但它们没有被反序列化..【参考方案3】:ASP.NET 假定 Web 控件的 Readonly 和 Enabled="false" 属性不会改变。因此,它不会回发上面 tom 提到的值。您可以使用此解决方法。将此添加到 html 中,您不必担心 Readonly 属性或禁用控件。
onkeydown="return false;"
【讨论】:
我还建议添加 onpaste="return false;"或者用户仍然可以将内容粘贴到该字段中。并且您可能还想阻止显示 IE 清除按钮:***.com/q/13481577/74585【参考方案4】:或者您可以将 ASP 文本框替换为带有 runat="Server" 的输入类型文本,然后将只读属性添加为只读。检查链接
Workarounds to access the Readonly Textbox value on server side when changed through client side script
【讨论】:
以上是关于为啥只读文本框在 ASP.NET 中不返回任何数据?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 中的 Ajax 自动完成文本框在母版页中不起作用
为啥 AppDomain.CurrentDomain.BaseDirectory 在 asp.net 应用程序中不包含“bin”?