Я использую Entity Framework + БД SQL Server и использую частичные классы с DataAnnotations для проверки данных. Для таких вещей, как Required и Range, это работает нормально, но я не могу заставить работать валидаторы DataType.
Вот пример (пользовательской) аннотации:
[DataTypeWholeNumberAttribute(ErrorMessage = "Zip must be a whole number")]
public object Zip{ get; set; }
... и код контроллера ...
[HttpPost]
public ActionResult Edit(NamedInsuredViewModel viewModel)
{
try
{ //breakpoint here (opening squiggly bracket) shows .Zip is already null
if (ModelState.IsValid)
...save, etc...
}
}
И я знаю, что происходит: DataType Zip в базе данных int, поэтому проверка по умолчанию улавливает это и применяет общее сообщение об ошибке «значение [x] недопустимо для [FieldName]», прежде чем мой валидатор добраться до него (чтобы доказать это, я также добавил тот же валидатор в строковое поле, и он работает просто отлично). Чего я не знаю, как я могу обойти это (и нет, я не могу изменить БД, чтобы использовать строки для всего)?
В этом посте были предложены некоторые предложения (http://forums.asp.net/p/1608322/4162819.aspx#4162819),, но пока ничего не помогло.
Заранее спасибо.
PS - действительно ли нет способа проверить примитивный тип данных без создания пользовательского атрибута?