在asp标签dosent工作中使用嵌入式代码启用和禁用asp验证器



使用asp标记中的嵌入代码启用和禁用asp验证器不起作用,值已写入,但控件仍处于启用状态。请检查的出现情况

Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" 

以这种形式:

<form id="frmValidator" runat="server">
<div>
<asp:ValidationSummary
ID="Summary"
runat="server"
HeaderText="Error(s):"
CssClass="msg-error" />
<asp:TextBox ID="txtText" runat="server" MaxLength="15" Enabled="false" />
<asp:RequiredFieldValidator
ID="rfvtxtText"
runat="server"
ControlToValidate="txtText"
ErrorMessage="Requiered."
Display="None"
ClientValidationFunction=""
SetFocusOnError="true"
Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />
<asp:RegularExpressionValidator
ID="revtxtText"
runat="server"
ControlToValidate="txtText"
Display="None"
ErrorMessage="Invalid."
ValidationExpression="[a-zA-ZñÑáéíóúÁÉÍÓÚ ,.*]{3,50}"
SetFocusOnError="true"
Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />
<asp:Button
ID="btnSave"
runat="server"
Text="Save" />
</div>
<form>

答案是你不能。

<%# %>是数据绑定表达式语法。没有ServerControl(如GridView、ListView)就无法使用它。

通常,我们从代码隐藏禁用/启用控制。

Javascript方法

另一种方法是使用Javascript禁用验证。但是,您需要重定向到不同的页面,或者在单击按钮后执行某些操作。否则,验证消息将在返回后显示给用户。

<script type="text/javascript">
if (document.getElementById('<%= txtText.ClientID %>').getAttribute('disabled') === 'disabled') {
alert('disabled');
ValidatorEnable(document.getElementById('<%= rfvtxtText.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%= revtxtText.ClientID %>'), false);
}
</script>

在我看来,这应该是可能的。虽然我自己还是个菜鸟,但我总是忘记哪块代码块能做什么。我会试试<%: --expression-- %>
这个问题的第二个答案做了一个很好的总结。

最新更新