Кажется, я не могу переопределить сообщение об ошибке проверки состояния модели для int
или для значений int?
.В предыдущих версиях Asp.Net Core я раньше получал, что ввод недействителен, теперь я получаю эту недружественную ошибку,
{"streetNo": ["Не удалось преобразовать строку в целое число: abc. Путь 'cityId', строка 24, позиция 23. "]}
, поэтому я пытаюсь обойти его, используя пользовательский атрибут проверки,
Я создал этот класс,
public class IsInt : ValidationAttribute {
public IsInt () : base () { }
public override bool IsValid (object value) {
Console.WriteLine (value);
if (value.IsNullObject ()) {
return true;
} else {
if (value.GetType () == typeof (int?)) {
return true;
} else {
return false;
}
}
}
protected override ValidationResult IsValid (
Object value,
ValidationContext validationContext) {
var message = "Only number is allowed";
return new ValidationResult (message);
}
}
и я реализую его таким образом,
[IsInt]
public int? StreetNo { get; set; }
Атрибут проверки не работает должным образом, если я ввожу строку, то есть "abc", я все еще получаюупомянутое сообщение об ошибке модели, оно работает только в том случае, если в строке есть числа, например "83444"
Чего мне здесь не хватает?