MVC - 需要多个模型的视图

时间:2012-01-16 14:59:08

标签: model-view-controller model

我在概念层面遇到问题,我读了很多,但我还没出去。 我想建模一个计划下订单的系统,并允许您根据所选位置选择产品。 在分析阶段,用户界面向类产品,位置和订单请求数据是正确的吗? 在设计阶段,如果orderView只访问订单模型并且从数据库中获取所有数据(使用不同的DAO作为位置,订单和产品),则可以查看对多个模型的访问并显示数据或更正确吗? 提前谢谢,文森佐

4 个答案:

答案 0 :(得分:3)

解决此问题的方法是使用ViewModel(http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx),基本上是复合将其他几个模型组合在一起的模型,以便将它们提供给视图。

因此,如果您有一个产品型号,一个位置模型和一个订单模型,您希望在一个视图上组合在一起的所有逻辑上不同的模型(例如,每月销售摘要),您可以创建一个包含产品,订单的SalesSummaryViewModel ,以及要返回该视图的位置。

答案 1 :(得分:2)

您应该考虑Model View ViewModel,创建ViewModel objects以满足您的观看需求,编写您的业务对象。

答案 2 :(得分:1)

没有绝对

在设计阶段“是对的......”是错误的说法。设计是一种权衡的练习。在我的论文的最后,我希望你得出结论,我们正在分裂你应该坚持的声音设计概念。

将UI与数据分开管理其互动是一个很好的设计目标

无论您使用MVP,MVC,MVVM在本论坛中主要是学术练习,因为我们没有整体设计细节。

为了论证,我们只需要调用基本思想MVC。 MVP是其中的变体,MVVM(ViewModel)是我们MVP的专业化。

MVVM / ViewModel是特定于.NET的

Model-View-ViewModel模式由microsoft架构师创建,以利用WCF,XAML和Silverlight(相对于ASP.NET和Windows Forms)的功能。归根结底,它是我们基本概念的一种变体,这种变体利用.NET技术来确定。

公开模型以查看
..或者不是判断模型视图控制器组件之间需要多少耦合的判断。

MVC 为您的视图提供对模型的引用。这对于数据绑定很方便。如果您使用.NET绑定体系结构,那么您最终可能会使用此模式。

MVP - 只有Presenter(控制器具有更多功率,如果您愿意)才能看到数据模型。例如,您仍然可以使用.NET绑定体系结构,但是演示者是中间人将其全部挂起。为什么?因为您根据整体设计做出了明智的决定。

MVP意味着Presenter非常了解视图和模型,因此它可以将它们连接在一起并处理UI输入。因此,每个视图都有一个Presenter,因为它们是定制对,(很可能)不可互换。

开发工具可以影响设计架构

例如,如果您使用.NET WCF进行开发,那么您绝对别无选择,只能使用MVVM;这就是框架的工作方式。

同样,Mac OS X开发IDE会强制您使用MVC。 Ruby On Rails和.NET MVC Web开发也是如此

如果您正在使用某种对象关系映射器(ORM) - 而.NET LINQ就是其中之一 - 那么您的设计本身可能没有数据访问层。

答案 3 :(得分:0)

如果您需要示例,请在音乐商店http://mvcmusicstore.codeplex.com/releases/view/64379#DownloadId=228002中完成。

详情大约是相关PDF的p95。