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

时间:2015-04-29 16:04:35

标签: c# asp.net webforms requiredfieldvalidator

在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>

2 个答案:

答案 0 :(得分:1)

答案是你不能。

<%# %>Data Binding Expression Syntax。没有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>

答案 1 :(得分:0)

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