У меня есть форма регистрации, и пользователь должен ввести квадратные метры своего дома. Я хотел бы, чтобы это значение было только целым числом. Есть ли способ проверить это значение с помощью атрибутов asp.net mvc?
да, это так, но вам нужно будет создать плоскую версию объекта, который вы хотите создать, потому что проверка с атрибутами выполняется только ПОСЛЕ преобразования 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;
}
}