Windows Form MVC - PullRequest
       7

Windows Form MVC

1 голос
/ 17 июля 2009

Я создаю приложение Windows Form, используя .NET 3.5. Я хотел бы использовать шаблон проектирования MVC. Приложение имеет две формы: быстрый запуск и представление, показывающее детали. У быстрого запуска просто есть дерево с 2 уровнями, поэтому древовидная структура выглядит примерно так:

  • Категория 1
    • Подкатегория 1-1
    • Подкатегория 1-2
  • Категория 2
    • Подкатегория 2-1 и т.д.,

Когда пользователь нажимает на категорию или подкатегорию, в представлении сведений отображаются все элементы, принадлежащие этой категории или подкатегории. Элемент может принадлежать только одной из категории или подкатегории (элементы в моем приложении на самом деле являются документами, такими как заказы, счета и т. Д.). Элемент категории и элемент подкатегории имеют почти идентичные свойства, но есть небольшая разница.

У меня есть класс контроллера, который обрабатывает событие click, вызванное быстрым запуском. Контроллер определяет, нажимает ли пользователь на категорию и подкатегорию, а затем получает все элементы, которые принадлежат этой категории или подкатегории. Затем все элементы отправляются в представление сведений для их отображения.

Мои вопросы: лучше ли использовать одно обобщенное представление сведений или создать представление для каждой категории и подкатегории? Если бы мне пришлось использовать одно обобщенное представление, мне нужно было бы показать / скрыть несколько полей в зависимости от того, принадлежат ли элементы категории или подкатегории, что может затруднить поддержание, если структура элементов категории и структура элементов подкатегории станут более разными в будущее.

Если бы я должен был создать представление для каждой категории и подкатегории, контроллер должен добавить представление категории и удалить представление подкатегории, когда пользователь нажимает на узел категории. Это то, что меня беспокоит, потому что контроллер должен добавить / удалить представление из главной формы, когда пользователь нажимает на узел, что для меня не очень хороший дизайн.

Так что ни один не кажется хорошим дизайном. Как правильно решить эту проблему?

EDIT: Какая часть слишком расплывчата. По сути, пользователь может видеть два типа элементов: CategoryItem и SubCategoryItem. SubCategoryItem является дочерним классом CategoryItem. В шаблоне MVC мне нужно 2 представления (вызов CategoryView и SubCategoryView), и контроллер определяет, какое представление визуализировать пользователю? Или только одно представление, чтобы контроллер всегда отображал это представление, и задача представления состоит в том, чтобы определить, отображать ли CategoryView или SubCategoryItem?

1 Ответ

1 голос
/ 17 июля 2009

Не зная о специфике вашего кода, мне кажется, что проблема не в вашем контроллере, а в вашем взгляде.

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

Это просто дикое предположение, основанное на том небольшом количестве информации, которое я могу почерпнуть из вашего поста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...