【问题标题】:Am I breaking MVC?我在破坏 MVC 吗?
【发布时间】:2011-08-14 08:44:53
【问题描述】:

这个问题主要是出于我自己的好奇心,因为我知道架构模式可以帮助我们,而不是控制我们,但我很想知道我构建这个小型宠物项目的方式是否是正确实现MVC 架构。

我习惯于在浏览器中开发 Web 应用程序,其中浏览器充当一种“主控制器”(您单击一个链接,它会为我更改视图,而无需编写任何额外的代码)。但是我正在为这个宠物项目开发一个桌面应用程序,如果你愿意的话,我很好奇如何实现“浏览器”。我回顾了我从事的一些 Flash 项目,我注意到他们在项目的根类中有处理视图创建的代码。这有意义吗?我的另一个想法是创建一个“ViewPort”类或基本上将该功能从根类中取出的东西,并且基本上充当组合视图/控制器(或者我什至可以制作一个控制器类来配合它)并在我需要浏览的所有视图之间更改该类。但我也不确定这是否有意义。

有没有一种标准的方法来管理 MVC 中的视图?您是否对根窗口使用控制器,然后显示您的不同视图(它们也有自己的控制器?)就像我说的,这更多是出于我自己的好奇心,所以我很感激任何答案。

【问题讨论】:

    标签: model-view-controller architecture


    【解决方案1】:

    被动视图或监督控制器更适合 winforms 应用程序。

    http://msdn.microsoft.com/en-us/library/ff647543.aspx

    【讨论】:

      【解决方案2】:

      如果我正确理解您的比较,您可以在 MVC 的根窗口中使用控制器。

      因此,如果您有一个共享布局页面,那么您就有一个视图,该视图将为使用此 _layout.cshtml 文件的每个视图自动加载。

      现在,如果您有一个客户订单窗口,您可以拥有所有这些 1. 用于网站整体共享外观的 layout.cshtml 文件 2. 主视图说/MySite/CustomerOrder/Index/656 - 由您的CustomerController.cs 文件创建的内容,一个名为Index 的方法。 3. 在您的 /Views/CustomerOrder/Index.cshtml 视图上,您​​可以取消显示其他视图 RenderAction("Index", "CustomerOrderHistory", new {customerId=@Model.CustomerId} 它通过一个名为 CustomerOrderHistoryController.cs 的控制器并寻找一个名为 Index 的方法 要么 渲染部分(“客户历史”) 这直接转到视图并复制并将当前视图的模型发送给它。

      因此,要回答您的问题,您可以拥有一个包含其他视图的主视图.. 但这取决于您是否想这样做 - 您不必这样做。

      【讨论】:

        猜你喜欢
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 2011-03-27
        • 1970-01-01
        相关资源
        最近更新 更多