Ответ Дарина работает, но проверка все еще не работает, как я ожидал.Я добавил пользовательскую проверку.Эта пользовательская проверка выполняет регулярное выражение без атрибута регулярного выражения.Это сделано иначе, вы не можете публиковать время, например 14:30, потому что регулярное выражение остановит его, или объект TimeSpan остановит его, потому что ожидает TimeSpan, например, 00: 00: 00.
Итак, я создал этопроверка для MVC 5 с Entity Framework 6 в Visual Studio 2013, обновление 4.
public class Training : IValidatableObject
{
private const string Time = @"^(?:[01][0-9]|2[0-3]):[0-5][0-9]:00$";
public int Id { get; set; }
[Display(Name = "Starttime")]
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
public TimeSpan StartTime { get; set; }
[Display(Name = "Endtime")]
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
public TimeSpan EndTime { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
Regex timeRegex = new Regex(Time);
if (!timeRegex.IsMatch(StartTime.ToString()))
{
results.Add(new ValidationResult("Starttime is not a valid time hh:mm", new[] { "StartTime" }));
}
if (!timeRegex.IsMatch(EndTime.ToString()))
{
results.Add(new ValidationResult("Endtime is not a valid time hh:mm", new[] { "EndTime" }));
}
return results;
}
}