Как я могу использовать CompareValidator для времен без дат? - PullRequest
4 голосов
/ 31 января 2009

Когда я ввожу 9: 00 в элемент управления Start и 16: 00 в Finish; приведенный ниже код не проходит проверку.

Кто-нибудь знает, как я могу использовать валидатор 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, просто кажется, что этот валидатор должен уметь обрабатывать.

Ответы [ 3 ]

8 голосов
/ 11 февраля 2009

Это, очевидно, не может быть сделано.

Для записи; Я использовал собственный валидатор.

РЕДАКТИРОВАТЬ: Вот мой пользовательский код валидатора на тот случай, если он понадобится кому-либо (то есть 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;
}
0 голосов
/ 31 января 2009

Сравните допустимые типы валидатора: Stinrg, Целое число, Двойной, Дата (без времени) Валюта

0 голосов
/ 31 января 2009

попробуйте изменить свойство Type на String, оно должно работать.

...