Посмотреть дизайн модели

У меня есть страница создания и страница редактирования для объекта. Страницы похожи, поэтому у меня есть базовая модель представления, которая содержит общие поля между страницами, и модель представления для каждой страницы, которая наследуется от базовой.

Одно из различий между двумя страницами заключается в том, что на странице создания есть форма поиска, в которой пользователь может вводить критерии и выполнять поиск с помощью запроса ajax. Поля критериев поиска не являются частью объекта. Я создал подмодель «SearchCriteria» со своими собственными свойствами для различных критериев поиска, чтобы я мог просто опубликовать эту модель при выполнении поиска и потенциально добавлять дополнительные критерии поиска в будущем без необходимости изменять параметры метода.

Оказывается, мне нужно добавить что-то еще, но это что-то еще является одним из свойств базовой модели представления. Я не уверен, как лучше всего это сделать. Я думаю, что мне придется считать свойство больше не распространенным и переместить его в мою модель представления редактирования и мою модель SearchCriteria, но тогда я потеряю свое общее сопоставление с сущностью и мне придется повторить код.

Я думаю, что где-то я ошибся, поэтому мы будем благодарны за совет по дизайну.

Спасибо


person Dan    schedule 06.10.2011    source источник


Ответы (1)


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

Что касается добавления свойства, которое не будет использоваться, я не думаю, что это создает большую проблему. Платформа .NET заполнена подклассами, которые не реализуют части базы. Вместо этого вы можете создать NotImplementedException. Для меня это стоит того, чтобы получить консистенцию и СУХОСТЬ.

Лично я обнаружил, что совместное использование моделей просмотра между контроллерами не очень хорошо (но в этом случае вы можете использовать один контроллер). Используя IoC с Ninject, я получаю множество ошибок циклической избыточности при привязке моих интерфейсов к одним и тем же моделям просмотра на контроллерах. По этой причине я вынул Ninject. Но, возможно, можно привязать на другом слое ... не пробовал.

person P.Brian.Mackey    schedule 06.10.2011