-1

ユーザーが形式 (dd/mm/yyyy) で日付を選択できる txtStartDate と txtEndDate の 2 つのテキスト ボックスがあります。ユーザーが選択したこれら 2 つの日付の間の日数が 45 日以下かどうかを確認するバリデーターを作成できる必要があります。Range や Compare などの Validator コントロールのいずれかを使用できますか?それとも、カスタム バリデータを作成する必要がありますか? どんな例でも非常に役に立ちます。

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.DataTypeCheckおよびType =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 に答える