12

ご存じのように、比較バリデーターを使用して日付を検証し、演算子の種類 (<、<=、>= など) に基づいてチェックできます。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">
4

4 に答える 4

30

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

<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>
于 2012-02-21T08:18:27.643 に答える
5

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

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>
于 2012-08-08T11:51:10.123 に答える
0

カスタム Validator を試し、onservervalidate イベントのコード ビハインドでテキストを DateTime に変換してから比較を行います。

protected void DateTimeComparision_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = Convert.ToDateTime(txtStartDate.Text) < Convert.ToDateTime(txtFinishDate.Text);
    }
于 2012-02-21T06:19:24.940 に答える
0
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);
}
}
于 2015-11-12T10:59:50.110 に答える