4

当我在 Start 控件中输入9:00 ,在 Finish中输入16:00 ;下面的代码验证失败。

有人知道我可以在没有日期的情况下使用 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 代替,这似乎是这个验证器应该能够处理的事情。

4

3 回答 3

8

这显然是做不到的。

作为记录; 我使用了自定义验证器。

编辑:这是我的自定义验证器代码,以防任何人(即 alhambraeidos)需要它。请注意,此代码将我的示例控件名称(txtStart 和 txtFinish)替换为我的应用程序中的实际名称(txtReady 和 txtClose)。

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;
}
于 2009-02-11T20:32:08.823 回答
0

尝试将 Type 属性更改为 String,它应该可以工作。

于 2009-01-30T21:35:48.547 回答
0

比较验证器允许的类型有:Stinrg、Integer、Double、Date(无时间) Currency

于 2009-01-30T21:36:28.653 回答