asp:基于条件的RequiredFieldValidator验证

ove*_*ove 21 c# asp.net validation

我有如下验证,但只是在勾选复选框时才触发.

<!-- TextBox and its validator -->
Name: <asp:TextBox ID="TextBox1" runat="server" />

<asp:RequiredFieldValidator runat="server"
        ID="RequiredFieldValidator1" 
        Text="*"
        ErrorMessage="Name is required" 
        ControlToValidate="TextBox1" />
Run Code Online (Sandbox Code Playgroud)

我可以使用asp:RequiredFieldValidator完成它吗?
我只想验证某个条件是否匹配.
目前,每次点击"保存"按钮时都会进行验证.

msh*_*yem 38

改为使用自定义验证器:

<asp:CustomValidator ID="cv1" runat="server"
        ErrorMessage="Name is required"
        Text="*"
        ControlToValidate="TextBox1"
        ValidateEmptyText="True" 
        ClientValidationFunction="validate" />
Run Code Online (Sandbox Code Playgroud)

和脚本(只是选中复选框和文本框值作为示例;您可以使用自定义逻辑):

<script type="text/javascript">
    function validate(s,args){
        if(document.getElementById("<%= checkboxId.ClientID %>").checked){
            args.IsValid = args.Value != '';

        }
        else{
            args.IsValid = true;
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这将进行客户端验证.如果您还需要服务器验证,请OnServerValidate在代码后面添加属性和处理程序.详情请见此处.

  • 注意:如果你想知道为什么它没有一个空的文本框火,你必须设置`ValidateEmptyText ="真"'上的CustomValidator. (9认同)

ove*_*ove 10

我通过在客户端添加以下javascript轻松解决了这个问题.

ValidatorEnable(document.getElementById("RequiredFieldValidator1"), true); or
ValidatorEnable(document.getElementById("RequiredFieldValidator2"), false);
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,Page.IsValid将为false (5认同)