В ASP.NET MVC 3, как я могу иметь сообщения об ошибках переменной, когда один и тот же сложный тип используется в 2 свойствах модели - PullRequest
1 голос
/ 10 июня 2011

У меня проблема с классом телефонного номера, определенным следующим образом:

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 Ответ

0 голосов
/ 10 июня 2011

Это проблема дизайна? Телефонный номер, рабочий телефонный номер и номер мобильного телефона - это разные классы, которые, вероятно, должны наследоваться от класса абстрактных телефонных номеров.

Это позволит вам аннотировать каждый тип телефонного номера по вашему усмотрению. Я также хотел бы указать REGEX для проверки формата каждого номера.

Надо подумать, что произойдет, если однажды я скажу, что рабочий номер телефона должен иметь добавочный номер и номер?

Поиск принципа единой ответственности, это может помочь. Удачи.

...