我正在创建一个ASP Web应用程序,在该应用程序中,一个表单需要在文本框字段中更新日期值,我在该文本框旁放置了日历按钮。它可以更新该文本框字段中的日期,但是该文本框是可编辑的。我希望只通过使用日历按钮来更新日期值,我使用了只读属性,但它返回空值,因此无法正常工作。
尝试使用客户端HTML的readonly
属性,而不是ASP.NET服务器端的readonly
。
myTextBox.Attributes.Add("readonly", "readonly");
根据MSDN的说明:
当TextBox控件的ReadOnly属性设置为true时,其Text值在发生postback时会被发送到服务器,但服务器不会对只读文本框进行任何处理。这可以防止恶意用户更改只读的Text值。除非经过服务器端代码修改,否则Text属性的值将在postback之间保留在视图状态中。
因此,具有服务器端readonly
属性的文本框在postback中具有null值。
您可以使用以下任一方法:
TextBox1.Enabled = false;
TextBox1.Attributes.Add("readonly","readonly");
二者区别在于,如果您将enabled=false
, 那么您无法传递textbox
的值。如果您需要传递textbox
的值,则应该使用textbox
的只读属性。
在asp.net中,您可以使文本框不可编辑
yourTextBoxName.Attributes.Add("readonly","readonly");
你也可以通过使用属性来实现相同的功能
Enabled="false"
在您的aspx页面上声明它,但是您将无法在代码后台页面中访问其值。
TextBox1.Enabled = false;
通过使用只读属性,在回传时会出现问题,只需设置此JavaScript属性即可解决。
onkeydown="javascript:return false"
通过使用这个,您可以拥有像只读等属性,并且绝对不会出现任何问题。