2009-01-30 143 views
2

當我輸入9:00進入開始控制,並且16:00進入完成;下面的代碼驗證失敗。如何在沒有日期的情況下使用CompareValidator?

有沒有人知道我可以使用ASP.NET驗證器的時間沒有日期的方式?

Start <asp:TextBox ID="txtStart" runat="server" /> (hh:mm) 
<br /> 
Finish <asp:TextBox ID="txtFinish" runat="server" /> (hh:mm) 
<br /> 
<asp:CompareValidator 
    id="cpvFinish" 
    ControlToValidate="txtFinish" 
    ControlToCompare="txtStart" 
    Operator="GreaterThanEqual" 
    Type="Date" 
    Display="Static" 
    EnableClientScript="true" 
    ErrorMessage="Finish time must be later than the start time." 
    runat="server" /> 

PS我知道我可以很容易地使用CustomValidator,它只是看起來像驗證器應該能夠處理。

回答

7

這appearently無法做到的。

備案;我使用了一個自定義驗證器。

編輯:這是我的自定義驗證代碼,以防萬一任何人(即alhambraeidos)需要它。請注意,此代碼將我的應用程序中的實際名稱(txtReady & txtClose)替換爲我的示例控件名稱(txtStart & txtFinish)。

try 
{ 
    // parse & compare dates 
    string randomDt = "01/01/2000 "; 
    args.IsValid = DateTime.Parse(randomDt + txtClose.Text) > DateTime.Parse(randomDt + txtReady.Text); 
} 
catch(Exception /*ex*/) 
{ 
    // exception is assumed to be invalid times entered 
    args.IsValid = false; 
} 
0

嘗試將Type屬性更改爲String,它應該可以工作。

+0

這是我第一次嘗試。但由於'9:00'中的'9'大於'16:00'中的'1',因此驗證失敗。 – 2009-01-30 21:40:29

0

比較驗證允許的類型有: Stinrg, 整數, 雙, 日期(沒有時間) 貨幣

相關問題