Есть несколько вещей, которые следует отметить в отношении поведения, которое вы описываете.
Во-первых, вы получаете эту ошибку, потому что выдается исключение при попытке присвоить строковое значение notdate полю DateTime.Когда это происходит, любые сообщения проверки, которые могли быть связаны с полем, будут перезаписаны общим сообщением: значение {0} недопустимо для {1}.
Во-вторых, базовый атрибут DataTypeAttribute нена самом деле не выполнять какие-либо проверки на поле.Используя Reflector, вы увидите, что метод DataTypeAttribute.IsValid () объявлен следующим образом:
public override bool IsValid(object value)
{
return true;
}
Надеюсь, это поможет.