在标记中放置TextBox Control的readonly属性?

时间:2011-11-08 15:07:02

标签: asp.net html

我有一个TextBox控件,我希望渲染的输入元素具有值readonly的{​​{1}}属性:

readonly

我可以使用以下代码在代码隐藏中执行此操作:

<input type="text" readonly="readonly" />

但我宁愿在我的标记中拥有所有控制属性及其值。我能在标记中做到吗? 解决方案可能是扩展TextBox控件,但这对于预期的结果来说过于复杂。


我希望能够使用javascript更改客户端的值,并在回发期间读取值服务器端。请注意,将textBox.Attributes["readonly"] = "readonly" 属性设置为TextBox.ReadOnly解决问题,因为这也会导致服务器忽略TextBox&#39;回发价值。 (MSDN。)我只想从浏览器中获取只读行为。

4 个答案:

答案 0 :(得分:1)

以下内容创建了一个只读文本框,其中文本的值可用于代码隐藏。

标记:

<asp:TextBox ID="Text1" runat="server" Text="One Two Three" ReadOnly="true" />

代码背后(本例为C#):

string someText = string.Empty;
if (Page.IsPostBack)
    someText = Text1.Text;

答案 1 :(得分:0)

你只有解决方案就是使用js。

答案 2 :(得分:0)

一种可能的方法是使用隐藏字段。 当你在javascript中更改 ReadOnly TextBox 的值时,也要更改隐藏字段的值,然后访问服务器端隐藏字段的值

答案 3 :(得分:0)

在没有获得ASP.NET的ReadOnly副作用的情况下,您似乎无法在标记中干净利落地完成任务。

但是,你可以使用内联代码,虽然它看起来很难看。

<asp:TextBox runat="server" ID="textBox" />
<% textBox.Attributes["readonly"] = "readonly"; %>