Я работаю над веб-приложением, которое может генерировать несколько HTML-отчетов.Раньше у отчетов были свои контроллеры, модели и отдельные представления, реализованные в виде страниц «.ascx», которые загружались на общую страницу «Display.aspx» при выборе различных отчетов.
Однако, по мере разработки этого приложения, мы выявили много общих компонентов между некоторыми страницами отчета, т. Е. Диаграммы / титульная страница / некоторые заявления об отказе от ответственности, которые были разветвлены как обычные ascx-страницы, которые затембыть загруженным данным отчетом.Если бы этими обычными страницами был статический HTML, это было бы просто, однако для большинства из них требовалась передача определенных параметров модели для генерации страницы, а для каждой из них часто требовались разные параметры, и это привело к проблеме, с которой я сейчас столкнулся:
В тех случаях, когда в отчетах было несколько общих полей, предыдущий разработчик решил использовать ту же модель.Таким образом, любое из этих общих представлений и самого основного отчета получало объект, который может содержать любой из параметров, требуемых для всех общих представлений, и любой из параметров отчета, которые используют общее представление.Это привело к тому, что это беспородный объект, имеющий десятки и десятки параметров, даже при использовании относительно простого отчета.В большинстве случаев многие из этих полей остаются неинициализированными управляющим контроллером, поскольку они просто не требуются.Хотя это работает, я чувствую, что это не очень хорошая философия дизайна, которая заставляет меня задаться вопросом:
- Является ли вышеуказанный сценарий приемлемым, и
- Что является лучшей альтернативой для управления этими общимивиды?
Я придумал, но хотел получить некоторые отзывы:
- Требование определенного интерфейса для каждого общего представления;тот, который имеет только поля, необходимые для его генерации.
- Создание уникальной модели для каждого отчета и внедрение в нее необходимых интерфейсов для поддержки определенных общих представлений, используемых конкретным отчетом
- При генерацииобщие страницы, позвольте .NET «повысить класс» объекта отчета, чтобы получить необходимые поля, но на самой общей странице он имеет дело с гораздо более общим объектом
Но есть ли предосторожности при таком подходе?Или что-то лучше / обычно делается в таких ситуациях?