如何使文本框在asp.net中不可编辑(c#)

时间:2012-07-02 08:42:20

标签: c# asp.net html5

我正在创建一个ASP Web应用程序,在该应用程序中,一个表单必须更新文本框字段中的日期值,我将日历按钮放在该文本框附近。它可以更新该文本框字段中的日期但可编辑。我想通过仅使用日历按钮更新日期值,我使用只读属性但返回空值,因此不起作用。

6 个答案:

答案 0 :(得分:10)

尝试使用客户端html readonly属性而不是ASP.NET服务器端readonly

myTextBox.Attributes.Add("readonly", "readonly");

来自MSDN,

  

发生回发时,将ReadOnly属性设置为true的TextBox控件的Text值发送到服务器,但服务器不对只读文本框进行处理。这可以防止恶意用户更改只读的Text值。除非由服务器端代码修改,否则Text属性的值将保留在回发之间的视图状态中。

这就是为什么带有服务器端readonly属性的文本框在回发中具有空值。

答案 1 :(得分:3)

您可以使用其中之一 TextBox1.Enabled = false;

TextBox1.Attributes.Add("readonly","readonly");

区别在于,如果你制作enabled= false,那么你就无法传递textbox的值。如果您需要传递textbox的值,则应使用textbox的只读属性。

答案 2 :(得分:1)

在代码隐藏文件的页面加载事件中,只需编写以下代码:

yourTextBoxName.Attributes.Add("readonly","readonly");

你也可以使用属性

来做同样的事情
Enabled="false"
在你的aspx页面上

但是你将无法在页面后面的代码中访问它的值。

答案 3 :(得分:0)

您可能想要使用此

   TextBox1.Enabled = false;

答案 4 :(得分:0)

您可以在asp.net中使textBox不可编辑

答案 5 :(得分:0)

通过使用只读它会在post back上给出问题,只需设置这个java脚本属性

onkeydown =“javascript:return false”

通过使用这个你可以拥有像readonly这样的属性,并且完全没有问题将是