C# 使用验证器确保用户填写两个必填字段之一

C# 使用验证器确保用户填写两个必填字段之一,c#,asp.net,.net,validation,asp.net-2.0,C#,Asp.net,.net,Validation,Asp.net 2.0,我有一个ASP.NET表格,用于兑换货币。其中有两个文本字段:金额来源和金额目标 其中一个必须填写,只有一个 如果适用,如何使用验证器实现此功能?我将实现一个自定义验证器,并用它装饰两个文本框。如果两者都已填充,则两者都处于错误状态。您可以为此使用自定义验证器: * * 函数ClientValidate(源、参数) { var tb1=document.getElementById(“”)值; var tb2=document.getElementById(“”)值; 如果(tb1和tb2 |

我有一个
ASP.NET
表格,用于兑换货币。其中有两个文本字段:金额来源和金额目标

其中一个必须填写,只有一个


如果适用,如何使用验证器实现此功能?

我将实现一个自定义验证器,并用它装饰两个文本框。如果两者都已填充,则两者都处于错误状态。

您可以为此使用自定义验证器:


*
*
函数ClientValidate(源、参数)
{
var tb1=document.getElementById(“”)值;
var tb2=document.getElementById(“”)值;
如果(tb1和tb2 |(!tb1和tb2)){
arguments.IsValid=false;
}否则{
arguments.IsValid=true;
}
}
服务器端:

protected void ServerValidate(object sender, ServerValidateEventArgs args)
{
  if(string.isNullOrEmpty(textbox1.Text) && string.isNullOrEmpty(textbox2.Text))
    args.IsValid = false;
  else if(!string.isNullOrEmpty(textbox1.Text) && !string.isNullOrEmpty(textbox2.Text))
    args.IsValid = false;
  else
    args.IsValid = true;
}

如果您使用的是jQuery,请发表评论…这可能会更干净。

如果复制示例代码-“dispaly”应该是“display”(出现两次),请注意:如果两个都为空,我发现这不起作用:如果文本框为空,则其自定义验证器不会启动。我发现,如果两个都为空,则要使此工作(在服务器端),我需要使用单个
CustomValidator
实例,而不使用任何
ControlToValidate
属性。@ChrisW,只需将属性设置为true即可。这是因为默认情况下,如果验证器查看的是空字段,它将完全跳过验证。不需要两个自定义验证器,一个就足够了-除非您希望对两个控件的事件(例如更改事件)启动验证。