#c# #asp.net #validation #asp.net-mvc-3 #data-annotations
#c# #asp.net #проверка #asp.net-mvc-3 #данные-аннотации
Вопрос:
У меня проблема, когда у меня есть класс телефонного номера, определенный следующим образом:
public class TelephoneNumber
{
[Required(ErrorMessage = "Phone number area code is required")]
public string AreaCode { get; set; }
[Required(ErrorMessage = "Phone number first 3 digits are required")]
public string PhoneFirst3 { get; set; }
[Required(ErrorMessage = "Phone number last 4 digits are required")]
public string PhoneLast4 { get; set; }
}
В моей модели у меня есть 2 свойства, где каждое из них использует тип данных telephoneNumber.
[DisplayName("*Cell Phone")]
public TelephoneNumber CellPhone { get; set; }
[DisplayName("*Work Phone")]
public TelephoneNumber WorkPhone { get; set; }
Я использую сводку проверки и хотел бы изменить сообщение об ошибке с «Требуется код города телефонного номера», чтобы указать, на какой номер телефона ссылается сообщение об ошибке. Например, «Требуется код города рабочего номера телефона» и «Требуется код города номера сотового телефона».
Также возможно ли добавить новый тип телефонного номера, такой как:
[DisplayName("Home Phone")]
public TelephoneNumber HomePhone { get; set; }
Но не требуется домашний телефон?
Это упрощенная версия моей реализации, но если возможно изменить или установить аннотации данных для свойств сложных типов, чтобы у них могли быть разные аннотации проверки, настроенные в нескольких свойствах, содержащихся в одной и той же модели, это значительно упростило бы жизнь при создании классов, более сложных, чем простой номер телефона.
Спасибо.
Ответ №1:
Это проблема дизайна? Номер телефона, рабочий номер телефона и мобильный — это разные классы, которые, вероятно, должны наследоваться от абстрактного класса телефонных номеров.
Это позволило бы вам аннотировать каждый тип телефонного номера по своему усмотрению. Я бы также указал РЕГУЛЯРНОЕ выражение для проверки формата каждого числа.
Стоит подумать о том, что произойдет, если однажды я скажу, что рабочий номер телефона должен иметь добавочный номер, а также номер?
Принцип единой ответственности поиска, это может помочь. Удачи.
Комментарии:
1. Я попытался упростить пример, чтобы увести обсуждение от дизайна. Я согласен со всем, что вы заявили, но это не отвечает ни на один из моих вопросов. Например, что, если у меня есть домашний телефон 1 и домашний телефон 2, но требуется только один. Как я должен справиться с этой ситуацией?