1

У меня есть этот класс переопределении в 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 

Как это решить?

Спасибо.

ответ

1

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

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

работает как шарм, спасибо большое! Кстати, мне не нужно использовать ToShortDateString() в этом классе, верно? Просто в сообщении об ошибке .. – developer033

+0

Вам все равно нужно использовать метод ToShortDateString() или ToString() для преобразования DateTime в строку, потому что тип данных параметра принимает только строку. Кроме того, вы можете установить значение времени максимального параметра равным 23:59:59 вместо 00:00:00, чтобы включить весь день, и вы можете сделать это с помощью: DateTime.Today.ToString ("dd/MM/yyyy 23:59:59 "). Счастливое кодирование! –

+0

Хорошо! Я видел это после того, как отправил свой комментарий ^^ – developer033

0

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