2012-02-21 109 views
9

大家都知道比較驗證器可用於驗證日期並根據運營商類型進行檢查(<,< =,> =等)。我已經設置cultureinvariantvalues="true"屬性來驗證兩個包含日期的文本框控件。我必須限制他們,以便開始日期必須早於完成日期。驗證好象當我輸入一個描述性的日期像下面失敗:Asp.net比較驗證器以驗證日期

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"> 
+0

哎,你使用單比較驗證了兩個文本框? – JayOnDotNet 2012-02-21 06:22:02

+0

@JayaPrakashRokkam它就夠了。無論哪種方式驗證會發生 – Deeptechtons 2012-02-21 06:31:36

回答

27

試試這個辦法,先輸入開始日期和檢查與結束日期文本框的比較驗證:

<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> 
+2

+1的日期以獲得最佳解決方案。如果我有另一個帳戶,爲簡單起見+1。做得好。 – 2013-03-22 03:27:17

0

試試自定義驗證並且在onservervalidate事件背後的代碼將文本轉換爲DateTime,然後做了比較。

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

自定義驗證程序是我的最後手段。我知道如何使用所有這些驗證器,我只是想知道比較驗證器是否僅支持format'm/d/y' – Deeptechtons 2012-02-21 06:32:25

4

比較驗證器類型= date.But該日期類型限制接受只有特定格式的日期,即ToShortDateString()。 如果要比較的兩個文本框的日期格式採用ToLongDateString()等其他格式或ToString(「dd MMMM,yyyy」)指定的格式,則比較不起作用。 CustomValidator isonly選項。 如果你想使用比較驗證才

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> 
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); 
} 
}