Ответ 1
Вы можете указать атрибут StringLength следующим образом по многочисленным свойствам
[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string OfficePhone { get; set; }
[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string CellPhone { get; set; }
и добавьте строковый ресурс (с именем StringLengthMessage
) в файл ресурса
"Maximum length is {1}"
Сообщение определяется один раз и имеет держатель переменной места размещения, если вы передумали относительно длины для проверки.
Вы можете указать следующее:
- {0} - Имя
- {1} - Максимальная длина
- {2} - Минимальная длина
Обновление
Чтобы свести к минимуму дублирование, вы можете подклассифицировать StringLengthAttribute:
public class MyStringLengthAttribute : StringLengthAttribute
{
public MyStringLengthAttribute() : this(20)
{
}
public MyStringLengthAttribute(int maximumLength) : base(maximumLength)
{
base.ErrorMessageResourceName = "StringLengthMessage";
base.ErrorMessageResourceType = typeof (Resource);
}
}
Или вы можете переопределить FormatErrorMessage
, если хотите добавить дополнительные параметры. Теперь свойства выглядят следующим образом:
[MyStringLength]
public string OfficePhone { get; set; }
[MyStringLength]
public string CellPhone { get; set; }