结合MVC中的两个现有模型

时间:2015-10-05 11:35:30

标签: asp.net-mvc asp.net-mvc-4 c#-4.0

这是来自MVC转储的问题:

您正在设计MVC Web应用程序。 对于没有技术背景的设计师来说,视图必须尽可能简单。 您需要组合两个现有模型以满足要求。 您应该使用MVC框架的哪个组件?

A.    View 
B.    View Model 
C.    Controller 
D.    Model

答案:D

这是对的吗?根据我的理解,我们应该使用ViewModel。

4 个答案:

答案 0 :(得分:0)

嗯,如果你看到,当我们谈论ViewModel时,没有什么是有形的,而是更多地用来暗示Model所绑定的View。通常,当我们遇到View需要多个Model的情况时,我们会在其周围放置一个包装类并将其称为ViewModel 无论如何,您的商家/域名实体应该与ModelViewModel不同。

现在只需回答您的问题,因为您需要为Models多个View,您应该有一个包装类,并且称之为ViewModel是绝对公平的,所以从某种意义上说,你是对的:)

答案 1 :(得分:0)

从我的角度来看,视图模型模型,旨在满足视图的需求。这意味着:如果你"结合"要模型"为了满足要求",您将拥有视图模型

我在MVC项目中的工作:我在C#代码中使用模型并将视图模型传递给视图,以便在视图中使用它。

答案 2 :(得分:0)

我认为对于使用MVC的开发人员,他正在开发作为其他经验丰富的MVC开发人员团队的一部分,那么你是对的,你应该使用ViewModel将显示逻辑与域模型或数据库模型分开(取决于你的应用程序架构。)

但是,我认为这个问题的关键部分是"对于没有技术背景的设计师来说,视图必须尽可能简单。"

因此,我认为这个问题建议你应该为经验较少的人做简单的事情,直接在视图中创建或使用现有的模型。

然而,问题的混乱部分是它询问您将使用什么来组合两个现有模型(即,您将使用什么类型的包装类)。这个包装类可以与其他域/数据库模型一起创建,在这种情况下,您可以将其称为模型。或者您可以在UI MVC项目中创建一个包装类,它将两个现有模型组合在一起并将其称为视图模型。正如问题所要求的那样,你会使用哪个组件的MVC框架" (即UI层)然后我希望包装类将被称为视图模型。但问题还提到了MVC框架&#34 ;; MVC代表模型,视图,控制器,因此您可能认为它期望您将包装类称为模型。

在一天结束时,恕我直言,这个问题很模糊,两个答案都可以被认为是正确的。无论如何,无论您将其称为模型还是视图模型,您创建的包装类都可能看起来完全相同。

答案 3 :(得分:0)

这很老,但是正确的答案是ViewModel,关于这个问题是:“您需要结合两个现有模型来满足要求。”然后,如果您选择答案“模型”,则这是不正确的。它必须是结合视图模型

B)是正确答案

最佳,