Я хочу ввести дату в виде строки внутри текстового поля. На самом деле есть два поля ввода
Оба должны быть в формате, как 00:00, поэтому я могу войти
Со временем 00:00
Ко времени 23:59
как можно проверить ввод пользователя в asp.net mvc viewmodel с помощью аннотаций, чтобы я мог ограничить ввод пользователей с 00:00
как минимальное значение и 23:59
как максимальное значение?
Вы можете создать собственный атрибут, который вы можете украсить своим свойством.
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=>....)
чтобы сделать эту работу
Используя регулярное выражение, вы можете проверить свою модель, и проверка на стороне клиента также работает с этим, как
[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$", ErrorMessage = "Error message")]
public string FromTime {get;set;}
ErrorMessage="Dates must be ....."
будет показано в@Html.ValidationMessageFor( x=> ....)
поэтому конечный пользователь увидит ошибку.