【发布时间】:2016-05-16 09:00:05
【问题描述】:
我最近正在使用 C# 中的 MVC 模式执行采购订单程序(不是 ASP.NET Web 应用程序,只是一个桌面程序)。现在的问题是,在 UI 中有很多按钮可以链接到另一个部分,假设从订单页面我可以单击并转到库存页面。当然,每个部分都有自己的一组 MVC。
如何在保持抽象的同时将按钮连接到其他控制器?也就是说,每个视图都不必了解其他控制器的工作原理,或者它需要哪些参数才能工作。
我想到了几种设计可能性,但我不知道哪个更好/更简单:
肮脏的方式:只是将所有需要的控制器的引用放在一个视图中,但这种方式会减少抽象。
共享视图空间:每个按钮都是具有自己控制器的不同视图,但我需要某种视图管理器。
路由:很像 ASP。 NET RedirectToAction,制作一个自定义路由器,使用通用类型(如字符串)来确定要执行哪个控制器和执行哪个操作
每个动作的自定义按钮:对于每个控制器和每个动作,我都为其创建了一个按钮类。然后我需要一种方法让视图为每个按钮提供所需的参数。
有什么建议吗?
【问题讨论】:
-
为什么你的视图需要引用控制器?如果您的视图只是发出事件,那么任何控制器或控制器都可以监听和响应。
-
那您如何注册该活动?假设 InventoryButton.Clicked += InventoryControl.ShowList (Inventory Model) 在不知道参考的情况下如何给 InventoryControl.ShowList?这或在控制器 OrderView.InventoryButton.Clicked += ShowList (InventoryModel) 中,视图和控制器必须相互了解
-
控制器通常依赖于视图并注册构造事件或其他合适的事件。
标签: c# asp.net-mvc design-patterns model-view-controller