如何在ASP.NET(C#)中使文本框不可编辑

7

我正在创建一个ASP Web应用程序,在该应用程序中,一个表单需要在文本框字段中更新日期值,我在该文本框旁放置了日历按钮。它可以更新该文本框字段中的日期,但是该文本框是可编辑的。我希望只通过使用日历按钮来更新日期值,我使用了只读属性,但它返回空值,因此无法正常工作。

6个回答

12

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

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

根据MSDN的说明:

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

因此,具有服务器端readonly属性的文本框在postback中具有null值。


5

您可以使用以下任一方法:

  • TextBox1.Enabled = false;
  • TextBox1.Attributes.Add("readonly","readonly");

二者区别在于,如果您将enabled=false, 那么您无法传递textbox的值。如果您需要传递textbox的值,则应该使用textbox的只读属性。


1

在asp.net中,您可以使文本框不可编辑


<asp:TextBox ID="txtBox1" runat="server" ReadOnly="true"></asp:TextBox> - Muhammad Omer Javed

1
在您的代码后台文件的页面加载事件中,只需编写以下代码:
yourTextBoxName.Attributes.Add("readonly","readonly");

你也可以通过使用属性来实现相同的功能

Enabled="false"

在您的aspx页面上声明它,但是您将无法在代码后台页面中访问其值。


"yourTextBoxName.Attributes.Add("readonly","readonly");" 更好,因为它允许您的文本框可调整大小,而 "Enabled="false"" 则不行。 - SubqueryCrunch

0
你可能想要使用这个:
TextBox1.Enabled = false;

0

通过使用只读属性,在回传时会出现问题,只需设置此JavaScript属性即可解决。

onkeydown="javascript:return false"

通过使用这个,您可以拥有像只读等属性,并且绝对不会出现任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接