我有2个TextBoxes(textBoxA,textBoxB),两者都由他们自己的RequiredFieldValidator观看。我想在textBoxA有一个值(或满足某些特定条件)时为textBoxB“启用”RequiredFieldValidator。
用例:
案例1 textBoxA =“”; - >显示必填字段验证消息 textBoxB =“”;的 - >不显示验证消息
案例2 textBoxA =“有一个值”; textBoxB =“”; - >显示必填字段验证消息
案例3 textBoxA =“有一个值”; textBoxB =“也有值”;
感谢您的帮助!!
答案 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中完成。
评估的验证器都与提交控件的同一验证组相对应。