Просмотр образцов моделей и их использование в ASP.NET MVC3 (также с использованием EF 4.1) - PullRequest
5 голосов
/ 12 июля 2011

Я искал ответ на этот вопрос в течение нескольких дней, и это сводит меня с ума.В настоящее время я работаю над проектом с использованием ASP.NET MVC 3 и пытаюсь использовать подход ViewModel для каждого контроллера, как было предложено во многих статьях и руководствах, которые я проверил.Чтобы лучше понять, что я спрашиваю, я обрисую ниже:

Допустим, у меня есть довольно простая и прямолинейная модель.Пользователи, клиенты, адреса, номера телефонов, заказы, товары, категории и т. Д. Когда пользователь регистрирует новую учетную запись на моем сайте, я хотел бы: 1) создать для них учетную запись (это просто идентификатор учетной записи,тип клиента) 2) Добавить демографические данные своих клиентов к клиентам 3) Добавить N-адреса и типы адресов 4) Добавить также N-номера телефонов с типом.a RegisterCustomerForRegistrationControllerViewModel.Мое затруднение - как выглядит эта модель?Я стараюсь быть максимально СУХОЙ, но при реализации этого паттерна я, кажется, повторяюсь на каждом шагу.На каком уровне я помещаю DataAnnotations для проверки?Итак, могу ли я просто создать нового Customer (), даже если я хочу использовать только одно свойство из класса в данной ViewModel?

Я даже не уверен в этом, что это правильное предположение.Похоже, что по этой теме так много мнения, а конкретных примеров реализации так мало.Я надеюсь, что кто-то может указать мне правильное направление и, возможно, представить некоторые фрагменты кода по пути ... Я надеюсь, что это все достаточно ясно, и если нет, пожалуйста, не стесняйтесь задавать дополнительные вопросы.Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

Повторение простых свойств на двух разных уровнях приложения не является нарушением DRY.Это просто хороший дизайн.

DataAnnotations идут на ViewModels.

ViewModel будет выглядеть примерно как

public class RegisterCustomerViewModel
{
    [Required]
    public string Name { get; set; }
    public List<AddressViewModels> Addresses { get; set; }
    public List<PhoneNumberViewModel> PhoneNumbers { get; set; |

} 
1 голос
/ 12 июля 2011

Точно так же, как jfar, я бы выбрал простой подход: одно представление, одно представление модели с аннотациями данных.

При этом ... Я знаю, что вы чувствуете (не уверен), и я понимаю, потому что я 'Я прошел через это сам.Мои выводы: если вы считаете, что ваше веб-приложение не требует слишком много накладных расходов, принципов и шаблонов, сделайте его простым.Я считаю, что не существует идеальной архитектуры.Есть только то, что работает, и есть накладные расходы.Иногда то, что работает, действительно сложно.Спросите себя, нужна ли вам эта сложность.

Возьмите мое первое предложение в качестве ответа на ваш вопрос, а остальные - в качестве моего скромного мнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...