У меня есть ряд унаследованных объектов, которые очень похожи, только несколько полей различаются между классами. В основе этой иерархии классов лежит абстрактный класс, который содержит множество полей, которые должны иметь все последующие объекты. Примерно так:
abstractBase
obj1 : abstractBase
obj2 : obj1
obj3 : obj2
Представление, которое отображает эти объекты, по сути одинаково для всех них, я просто ввожу новые элементы div для отображения данных, которые отличаются. Поскольку я новичок в MVC, у меня остается только два основных варианта:
Один из подходов заключается в создании строго типизированных представлений для каждого конкретного объекта. Каждое представление будет очень похожим, но с небольшими различиями для основных объектов На мой взгляд, это нарушает принцип DRY, поскольку 90% или более содержимого каждого представления будет повторяться в следующем. Но с другой стороны, взгляды были бы лишены какой-либо существенной логики.
Другой подход состоял бы в том, чтобы связать представление с базовым абстрактным классом, а затем ввести проверки на унаследованные классы, чтобы определить, нужно ли мне что-то выводить. что-то вроде:
if (Model.baseObject is obj3){ render out the special fields }
С другой стороны, я не буду нарушать принцип СУХОЙ, что я считаю хорошей вещью. Но с другой стороны, взгляды будут содержать логику. Насколько я понимаю, это более или менее осуждается.
- Кто-нибудь был в подобной ситуации?
- Какой подход вы выбрали?
- Есть ли другой вариант, который я не видел / не знал?
Сейчас я склоняюсь * к более тяжелым представлениям и менее избыточному коду. это выглядит лучше.
Спасибо