В настоящее время я работаю в приложении MVC 2, в котором все должно быть локализовано на n-языках (в настоящее время 2, ни один из них, кстати, английский).Я проверяю классы моей модели с помощью DataAnnotations, но когда я захотел проверить поле DateTime, обнаружил, что DataTypeAttribute всегда возвращает true, независимо от того, была ли это допустимая дата или нет (потому что, когда я вводил случайную строку «foo», IsValid () метод проверяет "01/01/0001", не знаю почему).
Решил написать свой собственный валидатор, расширяющий класс ValidationAtribute:
public class DateTimeAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime result;
if (value.ToString().Equals("01/01/0001 0:00:00"))
{
return false;
}
return DateTime.TryParse(value.ToString(), out result);
}
}
Теперь он проверяет ОК, когда он действителен икогда это не так, но моя проблема начинается, когда я пытаюсь его локализовать:
[Required(ErrorMessageResourceType = typeof(MSG), ErrorMessageResourceName = "INS_DATA_Required")]
[CustomValidation.DateTime(ErrorMessageResourceType = typeof(MSG), ErrorMessageResourceName = "INS_DATA_DataType")]
public DateTime INS_DATA { get; set; }
Если я ничего не помещаю в поле, я получаю локализованный MSG (MSG - мой класс ресурсов) для ключа = INS_DATA_Required, но еслиЯ поставил неверно отформатированную дату и получаю сообщение по умолчанию «Значение 'foo' недопустимо для INS_DATA", а не локализованный MSG.
Что я пропускаю?