2016-05-16 3 views
1

Я недавно делал программу заказа на поставку с использованием шаблона MVC в C# (не веб-приложение ASP.NET, а только настольную программу). Теперь проблема в том, что в пользовательском интерфейсе есть много кнопок, которые будут ссылаться на другой раздел, скажем, со страницы заказа, которую я могу щелкнуть и перейти на страницу инвентаризации. Каждый раздел, конечно, имеет свой собственный набор MVC.шаблон лучший способ подключения к нескольким контроллерам?

Как подключить кнопку к другому контроллеру, сохраняя абстракцию? То есть каждый вид не должен понимать, как работает другой контроллер, или какие параметры он требует для работы.

Есть несколько дизайнерских возможностей, что приходит на ум, но я понятия не имею, какой из них лучше/проще:

  • Грязный путь: просто положить ссылки на все необходимые контроллеры в одном окне , но таким образом уменьшите абстракцию.

  • Общее пространство просмотра: каждая кнопка представляет собой другой вид, который имеет свой собственный контроллер, но тогда мне нужно иметь диспетчер представлений.

  • Маршрутизация: в значительной степени, как ASP. NET RedirectToAction, создайте собственный маршрутизатор, который использует общий тип (например, строку), чтобы определить, какой контроллер и какое действие необходимо выполнить.

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

Любое предложение о том, что мне делать?

+0

Почему ваши взгляды требуют ссылки на контроллеры? Если ваши взгляды просто выходили из событий, то любой контроллер или контроллеры могли слушать и отвечать. –

+0

Тогда как вы регистрируетесь на это событие? Скажем, InventoryButton.Clicked + = InventoryControl.ShowList (Inventory Model), как вы предоставляете InventoryControl.ShowList, не зная ссылки? Это или в контроллере OrderView.InventoryButton.Clicked + = ShowList (InventoryModel) в любом режиме просмотра и контроллер должны знать друг друга –

+0

Контроллеры обычно зависят от представлений и регистрируются для событий в строительстве или в другом подходящем событии. –

ответ

0

Что я думаю, что вы должны использовать «общий вид», т. Е. Создать общий доступ, содержащий все эти кнопки и их вызовы, если это не работает для вас, тогда вы можете создать saprate вызовы WebAPI в своем контроллере, чтобы получить ваша дата взамен.

0

Я решил использовать модификацию моего 4-го варианта, фабричный шаблон, который создает все мои кнопки. Завод получает ссылки на все контроллеры и соответственно инициализирует все кнопки.

Этому виду нужна только эта фабрика во время строительства и попросите любую из кнопок, которые она может произвести.

Таким образом, во время строительства вид не должен знать ничего о контроллере. Контроллер также не должен знать мнение вообще.

Спасибо, что поделитесь своим мнением.

Смежные вопросы