web-dev-qa-db-ja.com

Asp.net比較バリデーターで日付を検証

ご存じのとおり、Compareバリデーターを使用して、日付を検証し、演算子のタイプ(<、<=、> =など)に基づいてチェックできます。 cultureinvariantvalues="true"プロパティを設定して、日付を保持する2つのテキストボックスコントロールを検証しました。開始日が終了日よりも早くなるように制限する必要があります。以下のような説明的な日付を入力すると、検証が失敗するようです。

StartDate: Tuesday, 21 February 2012

FinishDate: Wednesday, 22 February 2012

22が21より大きい場合でも、検証は失敗します。私が使用したマークアップは以下のとおりです。何らかの理由でフォーマット情報が必要な場合は、ここにdddd, dd MMMM yyyyがあります。

<asp:CompareValidator id="cvtxtStartDate" runat="server" 
       controltocompare="txtFinishDate" 
       cultureinvariantvalues="true" 
       display="Dynamic" 
       enableclientscript="true" 
       controltovalidate="txtStartDate" 
       errormessage="Start date must be earlier than finish date" 
       type="Date" 
       setfocusonerror="true" 
       operator="LessThanEqual" 
       text="Start date must be earlier than finish date">
10
Deeptechtons

このアプローチを試してください。最初に開始日を入力し、比較検証ツールと終了日テキストボックスを確認します。

<asp:CompareValidator id="cvtxtStartDate" runat="server" 
     ControlToCompare="txtStartDate" cultureinvariantvalues="true" 
     display="Dynamic" enableclientscript="true"  
     ControlToValidate="txtFinishDate" 
     ErrorMessage="Start date must be earlier than finish date"
     type="Date" setfocusonerror="true" Operator="GreaterThanEqual" 
     text="Start date must be earlier than finish date"></asp:CompareValidator>
27
Ebad Masood

比較バリデーターのtype = dateですが、その日付タイプは、特定の形式の日付、つまりToShortDateString()のみを受け入れるように制約されています。比較する2つのテキストボックスの日付形式が、ToLongDateString()などの他の形式、またはToString( "dd MMMM、yyyy")で指定された形式の場合、比較は機能しません。 CustomValidatorisonlyオプション。比較バリデーターのみを使用したい場合は、

textstartdate.text=Calendar1.SelectedDate.ToShortDateString();
textfinishdate=Calendar2.SelectedDate.ToShortDateString();
<asp:CompareValidator ID="CompareValidator4" runat="server" 
                    ControlToCompare="textstartdate" ControlToValidate="textfinishdate" 
                    CultureInvariantValues="True" 
                    ErrorMessage="Date should be greater than booking date." 
                    Operator="GreaterThanEqual" SetFocusOnError="True" Type="Date"></asp:CompareValidator>
4
Abhishek kumar
function FromAndToDateValidate() {
try {
    var StartDate = new Date();
    StartDate = $("#dtpFromDate").val();

    var EndDate = new Date();
    EndDate = $("#dtpToDate").val();
    args.IsValid = (StartDate <= EndDate);
}
catch (ex) {
    alert(ex);
}
}

カスタムバリデーターを試し、onservervalidateイベントのコードビハインドでテキストをDateTimeに変換してから比較を行ってください。

protected void DateTimeComparision_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = Convert.ToDateTime(txtStartDate.Text) < Convert.ToDateTime(txtFinishDate.Text);
    }
0
Neeraj Gulia