проверка времени с использованием аннотаций

1

Я хочу ввести дату в виде строки внутри текстового поля. На самом деле есть два поля ввода

  • От времени
  • Ко времени

Оба должны быть в формате, как 00:00, поэтому я могу войти

Со временем 00:00 Ко времени 23:59

как можно проверить ввод пользователя в asp.net mvc viewmodel с помощью аннотаций, чтобы я мог ограничить ввод пользователей с 00:00 как минимальное значение и 23:59 как максимальное значение?

Теги:
asp.net-mvc

2 ответа

2

Вы можете создать собственный атрибут, который вы можете украсить своим свойством.

namespace JensB.Tools.CustomAttributes
{
    public class IsDateOk: ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            if (value.GetType() != typeof(DateTime)) throw new InvalidOperationException("can only be used on DateTime properties.");
            bool isValid = // do validation here

            return isValid;
        }
    }
}

Затем вы можете украсить свою собственность следующим образом:

[IsDateOk(ErrorMessage="Dates must be .....")]
public property DateTime MyTime {get; set ;}

Приятная роль в этом заключается в том, что вам в основном не нужно кодировать что-либо на передней панели и просто нужно отобразить @Html.ValidationMessageFor( x=>....) чтобы сделать эту работу

  • 2
    Имейте в виду, что это работает только на стороне сервера ...
  • 0
    Проверка выполняется на стороне сервера, но ошибка отображается на стороне клиента. Сообщение, написанное в ErrorMessage="Dates must be ....." будет показано в @Html.ValidationMessageFor( x=> ....) поэтому конечный пользователь увидит ошибку.
Показать ещё 3 комментария
0

Используя регулярное выражение, вы можете проверить свою модель, и проверка на стороне клиента также работает с этим, как

[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$", ErrorMessage = "Error message")]
public string FromTime {get;set;}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню