Я строю сайт, используя MVC2 и имеют структуру, как следует:Дизайн вопрос
Factory -> Domain.objects -> MVC2
Один завод содержит перечисление для LOGTYPE, в котором подробно действия, которые были применены к объекту. Домен запрашивает объект и поставляет его в модель MVC2, это передается в представление как IEnumerable Ilog, и представление выполняет итерацию над ним.
Моя проблема в том, что я хочу, чтобы представление создало ссылку на основе типа журнала, поэтому у меня есть оператор switch в представлении, которое создает эту функциональность. Оператор switch использует перечисление прямо в репозитории, но мне это кажется немного неправильным: выставляя репозиторий для представления.
Должен ли я инкапсулировать тип журнала в новый IList объектов в домене? Или это нормально, ссылаясь на это перечисление в репозитории.
Если ни одно из них не является идеальным, какое наилучшее решение?
Спасибо за любую помощь, которую я мог бы получить.
Спасибо Дарин! Я думаю, что я не понимаю, для каких моделей взглядов. Я бы поместил некоторую логику в модель представления, которая обратилась к домену. Должен ли контроллер обращаться к домену и передавать эту информацию в конкретную модель просмотра, а затем возвращать любые результаты в домен? –
@misterjingo, в то время как модель представления содержит логику представления, она не должна напрямую обращаться к домену. Это контроллер, который делает мост между доменом и моделью просмотра, используя слой отображения. Это также работает наоборот: вы получаете модель представления в качестве аргумента действия контроллера, контроллер сопоставляет эту модель представления с моделью и вызывает репозиторий, передающий модель. –
Я вложил эти изменения в место, и он действительно прибрал мой код. У меня есть один последний вопрос. Я использую интерфейсы для передачи объектов. Например, мой домен вызовет репозиторий (скажем, пользователь) и получит объект IUser (спецификация IUser находится в repository.users.interface). Я считаю, что это нормально для домена, чтобы использовать это определение IUser. Не желая, чтобы мой контроллер или представление имели какие-либо знания IUser, я сопоставлял IUser с domainUser и передавал его контроллеру. Должно ли это отображение происходить в домене или в контроллере? –