模式连接View到多个控制器的最佳方法?

时间:2016-05-16 09:00:06

标签: c# asp.net-mvc design-patterns model-view-controller

我最近在C#中使用MVC模式执行采购订单程序(不是ASP.NET Web应用程序,只是桌面程序)。现在的问题是在UI中有很多按钮会链接到另一个部分,比如我可以点击订单页面并转到库存页面。每个部分当然都有自己的一套MVC。

如何在保持抽象的同时将按钮连接到其他控制器?也就是说,每个视图都不必了解其他控制器的工作方式,或者工作所需的参数。

我想到了一些设计可能性,但我不知道哪一个更好/更简单:

  • 脏方法:只需将引用放在一个视图中的所有必需控制器上,但这样可以减少抽象。

  • 共享视图空间:每个按钮都是一个不同的视图,它有自己的控制器,但我需要有某种类型的视图管理器。

  • 路由:非常像ASP。 NET RedirectToAction,创建一个使用通用类型(如字符串)的自定义路由器来确定哪个控制器和要执行的操作

  • 每个动作的自定义按钮:对于每个控制器和每个动作,我只为它制作一个按钮类。然后我需要一种方法让视图为每个按钮提供所需的参数。

有关我该怎么做的任何建议?

2 个答案:

答案 0 :(得分:0)

我认为你应该为#34;共享视图"即在包含所有按钮及其调用的共享视图上创建(如果这对您不起作用),则可以在其控制器中创建WebAPI的saprate调用以获取日期作为回报。

答案 1 :(得分:0)

我决定对我的第四个选项进行修改,这是一个创建所有按钮的工厂模式。工厂将获得所有控制器的参考,并相应地初始化所有按钮。

视图在施工期间只需要这个工厂,并要求它可以生成任何按钮。

这样,视图在构造期间不需要知道控制器的任何信息。控制器也根本不需要了解视图。

感谢大家分享他们的意见。