Да, это так, но вам придется создать плоскую версию объекта, который вы хотите создать, потому что проверка только с атрибутами запускается ПОСЛЕ того, как MVC преобразовал ваши данные в модель. который, если ваше значение равно int, не сможет проверить, если пользователь не ввел int, и вы получите сообщение об ошибке MVC вместо вашего сообщения об ошибке.
Вы можете опубликовать объект, который хотите сделать?
для плоской версии я имею в виду, что все даты и целые числа являются жалами в плоской версии.
тогда я использую это:
[DisplayName("Square meters")]
[PosNumberNoZero(ErrorMessage = "need a positive number, bigger than 0")]
public string squaremeters { get; set; }
в том же файле
public class PosNumberNoZeroAttribute : ValidationAttribute {
public override bool IsValid(object value) {
if (value == null) {
return true;
}
int getal;
if (int.TryParse(value.ToString(), out getal)) {
if (getal == 0)
return false;
if (getal > 0)
return true;
}
return false;
}
}
если мое состояние модели допустимо, тогда я использую AutoMapper для преобразования моей FlatModel в мою модель, которая состоит всего из 2 строк кода.
изменить: если 0 является действительным числом:
public class PosNumberAttribute : ValidationAttribute {
public override bool IsValid(object value) {
if (value == null) {
return true;
}
int getal;
if (int.TryParse(value.ToString(), out getal)) {
if (getal >= 0)
return true;
}
return false;
}
}