条件验证ASP.NET

时间:2009-11-10 22:51:51

标签: asp.net validation

我有2个TextBoxes(textBoxA,textBoxB),两者都由他们自己的RequiredFieldValidator观看。我想在textBoxA有一个值(或满足某些特定条件)时为textBoxB“启用”RequiredFieldValidator。

用例:

案例1 textBoxA =“”; - >显示必填字段验证消息 textBoxB =“”;的 - >不显示验证消息

案例2 textBoxA =“有一个值”; textBoxB =“”; - >显示必填字段验证消息

案例3 textBoxA =“有一个值”; textBoxB =“也有值”;

感谢您的帮助!!

4 个答案:

答案 0 :(得分:6)

您可能希望使用CustomValidator来执行此操作。您需要实现客户端和服务器端验证。像(在我的头顶和未经测试的)

之类的东西

服务器端

protected void ServerValidation (object source, ServerValidateEventArgs args)
{      
   if (!string.IsNullOrEmpty(textBoxA))
       args.IsValid = !string.IsNullOrEmpty(textBoxB);

}

客户端

function clientValidation(sender, args) {
    if (args.value !== "") {
       var textBoxB= document.getElementById('textBoxB');
       args.IsValid = (textBoxB.value !== "");
    }
    return;
}

答案 1 :(得分:4)

在这种情况下,我会为textBoxB使用CustomValidator而不是必需的字段验证器。在服务器端验证方法中,您可以使用类似的方法控制验证的确切性质。

if (textBoxA.Text != string.Empty)
{
    args.IsValid = textBoxB.Text != string.Empty;
}

答案 2 :(得分:0)

我不相信有一种声明性的方式来做到这一点。我总是通过使用ValidatePage方法完成此操作,我将验证器设置为启用或禁用,然后在最后调用Page.Validate(然后根据Page.IsValid继续或渲染)。

所以,

validator2.IsEnabled = textBoxA.Text.Trim().Length > 0

或类似的东西。

这是伪代码btw ...我现在还没有完成ASP.NET。

答案 3 :(得分:0)

我所做的是根据要求更改验证组,例如,您可以将验证组分配给textBoxB,使其与textBoxA.ValidationGroup&的值不同或相同。提交控件,这可以在textBoxB的Onchange中完成。

评估的验证器都与提交控件的同一验证组相对应。