#c# #.net #data-annotations
#c# #.net #данные-аннотации
Вопрос:
У меня проблема с пользовательской аннотацией данных.
public class RequiredInt32 : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
if (Convert.ToInt32(value) == 0)
{
return new ValidationResult("custom-message");
}
}
return ValidationResult.Success;
}
}
У меня есть этот код. Если условие выполнено, no возвращает «пользовательское сообщение», возвращает мне «Поле недопустимо». Для меня верните сообщение, которое я хочу, мне нужно указать его явно.
[RequiredInt32 (ErrorMessage = @ «пользовательское сообщение»)]
Что у меня не так и как я могу сделать, чтобы получить сообщение по умолчанию. Спасибо!
Комментарии:
1. Вам также необходимо переопределить
FormatErrorMessage
: msdn.microsoft.com/en-us/library/cc668224.aspx
Ответ №1:
Если вы хотели настроить сообщение об ошибке форматирования, вы можете определить такой атрибут:
public class RequiredInt32 : ValidationAttribute
{
private const string _customFormat = "{0} is not valid";
private string _fieldName;
public RequiredInt32(string fieldName)
: base(_customFormat)
{
_fieldName = fieldName;
}
public override string FormatErrorMessage(string name)
{
return string.Format(ErrorMessageString, name);
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
if (Convert.ToInt32(value) == 0)
{
return new ValidationResult(FormatErrorMessage(_fieldName));
}
}
return ValidationResult.Success;
}
}
Использование:
[RequiredInt32("MyField")]
public int NumberProperty {get;set;}