【发布时间】:2014-04-01 13:30:26
【问题描述】:
如何保护 asp:textbox 免受用户输入的影响?
禁用它
<asp:TextBox ID="txbx" runat="Server" Text="1" Enabled="false" />
保护它
<asp:TextBox ID="txbx" runat="Server" Text="1" ReadOnly="true" />
我希望保护上面的文本框不受用户输入的影响,但仍然允许使用 javascript 更新值。
这很好用,有什么问题?
问题
如果文本框是disabled 或readonly,则更新的值在提交时不会发布到服务器!
问题
如何创建一个可以同时进行的文本框:
对用户可见。
防止用户输入。
用 javascript 更新。
将更新后的值发布到服务器。
回答
发生冲突是因为当您在控件上设置enabled="false" 时,它不会将值传递给服务器。
但是设置disabled 或readonly 客户端不会导致此问题。
您可以使用以下方法设置属性客户端:
在后面的代码中:
txbx.Attributes.Add("ReadOnly", "ReadOnly")
txbx.Attributes.Add("disabled", "disabled")
或通过使用客户端控件并将它们设置为运行服务器:
<input type="text" id="txbx" readonly="readonly" runat="server" />
<input type="text" id="txbx" disabled="disabled" runat="server" />
【问题讨论】:
-
这是 vb 还是 C#。我可以用 Visual Basic 告诉你。然后你可以转换成C#,如果是C#的话,有很多VB到C#的转换器。
-
您确定更新的值不会被回发吗?我使用了 ReadOnly = "true" 并使用 jQuery 进行了更新,从未出现过问题。
-
@KashishArora VB 更好,谢谢
-
@Mych 是的,删除只读后一切正常。这是来自此处的后续帖子:stackoverflow.com/questions/22095888/…
-
经过一些试验标准 asp:TextBox 不会回发客户端更新值,而 ReadOnly = True 但 Telerik Texbox 控件可以。我广泛使用 Telerik,因此当您遇到此问题时感到困惑。
标签: c# asp.net vb.net readonly disabled-control