DataTypeAttribute показывает неправильное сообщение

Я создаю следующий атрибут:

public class SpecificDataTypeAttribute : DataTypeAttribute { public SpecificDataType(DataType dataType, string field) : base(dataType) { this.ErrorMessage = string.Format("{0} {1}", field, Messages.SpecificDataTypeAttribute); } } 

И используйте как:

 [SpecificDataType(DataType.DateTime, "Initial date")] public DateTime? InitialDate { get; set; } 

Таким образом, сообщение, которое находится в Messages.SpecificDataTypeAttribute , "is in a incorrect format." , Когда я ввел неправильную дату в InitialDate, я получил ошибку по умолчанию: "The value '12' is not valid for InitialDate." , Зачем? Я поставил точку останова, и код вызывает SpecificDataType ctor.

Вы идете в неправильном направлении – в asp.net mvc, DataTypeAttribute не определяет правила проверки. Это более или менее похоже на UIHintAttribute – помогает указать, какой шаблон использовать при рендеринге свойства в режимах редактирования или отображения.

Взгляните на этот ответ, чтобы узнать о настройке сообщений проверки для системных типов

Значение для PropertyValueInvalid форматируется с заменой {0} на недопустимое значение и {1} с именем свойства. Таким образом, вы можете определить его как

{1} находится в недопустимом формате

В MVC 4 можно локализовать сообщение об ошибке по умолчанию. http://weblogs.asp.net/imranbaloch/archive/2013/03/31/localizing-default-error-messages-in-asp-net-mvc-and-web-form.aspx