Asp.net 比较两个自定义控件的验证

Asp.net 比较两个自定义控件的验证,asp.net,validation,c#-3.0,Asp.net,Validation,C# 3.0,我有一个场景,页面包含输入的签入日期和签出日期。我对datepicker使用了用户控件,所以两个日期都称为同一个用户控件。 像 入住日期: 退房日期: 现在我对这两个日期都进行了验证,它们不应该像这样为空 public class CustomiseDatePickerValidator : BaseValidator { protected override bool EvaluateIsValid() { Control c = this.F

我有一个场景,页面包含输入的签入日期和签出日期。我对datepicker使用了用户控件,所以两个日期都称为同一个用户控件。 像

入住日期:
退房日期:

现在我对这两个日期都进行了验证,它们不应该像这样为空

public class CustomiseDatePickerValidator : BaseValidator
 {

   protected override bool EvaluateIsValid()
        {
            Control c = this.FindControl(this.ControlToValidate);
            DatePicker datepickerSelected = c as DatePicker;
            ICustomiseRadDatePicker additionUserControl =    (ICustomiseRadDatePicker)c.Parent;

            if (string.IsNullOrEmpty(datepickerSelected.DateInput.Text))
             {
                return false;
             }

            return true;
        }
 }

这工作正常,但我还想比较两个日期选择器的值,以便签入日期应小于签出日期。我可能错了,但我认为您需要使用CompareValidator进行此操作。如果我遗漏了一些内容,请更正。

使用
CustomValidator
可能更容易做到这一点。使用
CustomValidator
,您可以指定自己的客户端验证逻辑

有关更多详细信息,请参见此问题:

CustomValidator的更好解决方案是将ValidationPropertyAttribute应用于用户控件类。这样,您就可以像使用任何其他控件一样,对用户控件使用普通ASP.NET验证程序

我知道,但我必须验证用户控件内的两个日期选择器。好的,我明白了,实际上,您可以使用黑客对用户控件使用验证控件,我的意思是验证控件不在用户控件内,只需尝试设置ControlToValidate=“uc1:TextBox1”,其中TextBox1是要验证的服务器控件的名称,它位于UserControl中。我已经在UserControl中的文本框上成功地为RequiredValidator实现了这一点。希望这有帮助。