Атрибут диапазона для дат

У меня есть этот класс, переопределяющий RangeAttribute:

public class RangeDateAttribute : RangeAttribute
{
    public RangeDateAttribute()
        : base(typeof(DateTime),
    DateTime.Now.AddYears(-20).ToShortDateString(), DateTime.Today.ToShortDateString()) { }
}

DataAnnotation для моего атрибута:

[RangeDate(ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime anyDate { get; set; }

Я использую метод [ToShortDateString()] в этой проверке, но когда отображается ошибка, она приходит со временем. Пример:

Value for anyDate must be between 26/05/1995 00:00:00 and 26/05/2015 00:00:00

Как я могу решить это?

Благодарю.

2 ответа

Решение

Вы можете использовать небольшое форматирование для атрибута сообщения об ошибке:

[RangeDate(ErrorMessage = "Value for {0} must be between {1:dd/MM/yyyy} and {2:dd/MM/yyyy}")]
public DateTime anyDate { get; set; }

Необходимо отформатировать сообщение об ошибке, используя, например, метод ArgumentException(String) и применить спецификацию форматирования, например String.Format("{0:d}", dt), относящуюся к короткой дате. Надеюсь, что это может помочь. С наилучшими пожеланиями,

Другие вопросы по тегам