Я использую СУБД Entity Framework + SQL Server и использую частичные классы с DataAnnotations для проверки данных. Для таких вещей, как Required и Range, это работает нормально, но я не могу заставить валидаторы DataType работать.MVC2: Использование DataAnnotations для проверки 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...
}
}
И я знаю, что происходит: тип данных Zip в база данных является int, поэтому проверка по умолчанию ловит это и применяет общее сообщение об ошибке «значение [x] недопустимо для [FieldName]», прежде чем мой валидатор сможет его получить (чтобы доказать это, я также добавил тот же валидатор к строковому полю, и он отлично работает). Я не знаю, как я могу обойти это (и нет, я не могу изменить БД, чтобы использовать строки для всего)?
Некоторые предложения были предложены в этом посте (http://forums.asp.net/p/1608322/4162819.aspx#4162819), но до сих пор ничего не помогло.
Заранее спасибо.
PS - нет ли способа проверить примитивный DataType без создания настраиваемого атрибута?
Почему Zip-объект? Почему это не int? – jfar