-1

我有两个文本框,txtStartDate,txtEndDate,允许用户选择格式(dd/mm/yyyy)的日期。我需要能够创建一个验证器来检查这两个用户选择的日期之间的天数是否为 45 天或更短。我可以使用 Range 或 Compare 等验证器控件之一,还是必须创建自定义验证器?任何示例都会非常有帮助。

4

2 回答 2

1

您可以使用CustomValidator

<asp:CustomValidator id="StartEndDiffValidator"
       ValidateEmptyText="true"
       ClientValidationFunction="StartEndValidate"
       OnServerValidate="StartEndValidate"
       Display="Dynamic"
       ErrorMessage="Timespan between start and end must be exactly 45 days"
       runat="server"/>

这个答案将引导你到ClientValidationFunction.

始终实现服务器端验证:

void StartEndValidate(object source, ServerValidateEventArgs args)
{
    DateTime startDate;
    DateTime endDate;
    bool isStartDate = DateTime.TryParse(txtStartDate.Text, out startDate);
    bool isEndDate   = DateTime.TryParse(txtEndDate.Text, out endDate);
    if(isStartDate && isEndDate)
    {
        int days = (endDate - startDate ).Days;
        args.IsValid = days == 45;
    }
    else
    {
        args.IsValid = false;
    }
}

您还可以使用 CompareValidatorswith Operatorproperty set toValidationCompareOperator.DataTypeCheckType =Date 来确保在两者中都输入了日期。

于 2012-05-03T14:13:46.643 回答
0

试试这个块:

Dim st As String = txtClientSerStartTime.Text
Dim et As String = txtClientSerEndTime.Text
Dim time1 As DateTime
DateTime.TryParse(st, time1)
Dim ts1 As New TimeSpan(time1.Hour, time1.Minute, time1.Second)

Dim time As DateTime
DateTime.TryParse(et, time)
Dim ts As New TimeSpan(time.Hour, time.Minute, time.Second)

Dim dur As TimeSpan = ts - ts1
Dim unit As Decimal = dur.Hours 

If unti = 45 Then
    'do something'
Else
    'do something'
End If
于 2012-05-03T13:55:20.197 回答