Вопрос дизайна - PullRequest
       39

Вопрос дизайна

0 голосов
/ 07 февраля 2011

Я строю сайт с использованием mvc2 и имею следующую структуру:

Factory -> Domain.objects -> mvc2

Одна фабрика содержит перечисление для logType, которое детализирует действия, которые были применены к объекту. Домен запрашивает объект и передает его в модель MVC2, это передается представлению как IEnumerable Ilog, и представление перебирает его.

Моя проблема в том, что я хочу, чтобы представление создавало ссылку на основе типа журнала, поэтому в представлении есть оператор switch, который создает эту функцию. Оператор switch использует enum прямо в репозитории, но мне кажется, что это немного неправильно: выставление репозитория в представление.

Должен ли я инкапсулировать тип Log в новый IList объектов в домене? Или это нормально, ссылаясь на это перечисление в хранилище.

Если ни один из них не идеален, каково лучшее решение?

Спасибо за любую помощь, которую я могу получить.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2011

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

0 голосов
/ 07 февраля 2011

Лучшим решением будет использование модели представления.Модель представления - это класс, который специально адаптирован к потребностям представления.Итак, вот типичный рабочий процесс для действия контроллера:

  1. Запрос репозитория для извлечения некоторых объектов домена
  2. Сопоставление этих объектов домена с соответствующей моделью представления ( AutoMapper может помочь вам здесь)
  3. Передайте модель представления в представление

Таким образом, в этом сценарии представление не знает ни о одной из ваших моделей предметной области.Это в целом.

Теперь для вашего конкретного случая генерации различных ссылок на основе значения перечисления я думаю, что написание ifs и переключателей в представлении приводит к ужасным последствиям.Ты не находишь?Так что написание собственного помощника HTML, который будет генерировать правильную ссылку на основе модели представления, было бы замечательно, особенно если ваше представление выглядит так:

<%= Html.MyLink() %>
...