ご存じのとおり、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">
このアプローチを試してください。最初に開始日を入力し、比較検証ツールと終了日テキストボックスを確認します。
<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>
比較バリデーターの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>
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);
}