2011-12-15 4 views
1

Я не знаю, как лучше всего иметь несколько моделей взглядов, которые производятся из одной модели.Несколько MVC ViewModels, производные от одной модели

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

Я заметил, что базовая модель с атрибутом MetadataType указывает на модель представления, в которой есть аннотации данных, но это вынуждает отношения 1: 1, когда нам нужны модели 1: M (1 модель: M).

В настоящее время мы не используем картографические карты и не оставляем в стороне карточек, что было бы лучшим способом выполнить вручную модели просмотра, содержащие аннотации данных, которые представляют собой одну модель. Возможно, если модель представления была получена из класса модели, удалили аннотации данных модели и затем создали свойства в модели представления, которые отражают модель (но не могут быть тем же именем, что и теневые свойства модели?) И имеют диктуемое представление аннотации данных на вид модели собственности, такие как ...

[DisplayName("Version Number")] 
    [StringLength(30)] 
    public double VMVersionNumber 
    { 
     get { 
      return VersionNumber; // VersionNumber is model property 
     } 
     set { 
      value = VersionNumber; 
     } 
    } 

Благодарности

ответ

1

не будет ли состав работать лучше, чем наследование?

+0

Где определение типа 'Пользователь'? И разве это не преувеличивает цель ViewModel, так как (я предполагаю, что вы имели в виду, что свойство установлено в объект ModelUser), это вообще не будет адаптировать класс модели. –

+3

Извините, отредактированный код немного уточнить ... Целью модели является моделирование бизнес-объекта. Цель viewmodel - собрать каждую часть данных для некоторой страницы в один объект. Это легко достигается с помощью композиции. Вы пытаетесь использовать свои модели просмотра для чего-то еще? – Shlomo

+0

Композиция - это то, что я использую сейчас для ViewModels, но это тесно связано с моделью в том смысле, что если я добавлю аннотацию данных к модели (скажем, требуемую), то каждое представление, которое использует это с моделью представления состава, должно обрабатывать это поле по мере необходимости , Было бы предпочтительнее добавить большинство аннотаций данных в режиме просмотра, поскольку использование данных будет зависеть от требований к представлениям. Наследование более слабо связано с моей точки зрения и позволит использовать одни и те же данные различными способами в зависимости от потребностей вида. – user1100352

Смежные вопросы