2009-09-04 50 views
9

我是新手。我想问一下关于分离问题的MVC模型。我已经阅读了一些MVC教程,但我还没有完全理解每个Model,View和Controller的角色。MVC - 分离问题

例如说我正在为用户编写一个应用程序来监视投资组合。我希望登陆页面根据不同的标准显示投资清单,例如可以根据投资额列出投资,另一个可以根据投资业绩进行排序。

我的问题是,根据设计模式,我应该在哪里编写生成列表的逻辑;在模型,视图还是控制器中?

另外任何asp.net MVC示例演示分离的担忧是非常感谢。

在此先感谢你们。

回答

4

冒着重复自己的风险,我会告诉你我给出的答案in this threadThe entire thread可能是值得你花时间的,就像Stack Overflow上的其他几十个人一样。

要打破它简单地说:

控制器 - 控制应用程序的流程,使有关数据决定。

模型 - 执行业务逻辑。

浏览次数 - 生成输出。

对于您的特定情况,您将希望在查看图层中生成您的列表。使用模板创建您的列表结构,并使用从模型层获取的数据填充它们。

我不是一个asp.net程序员,所以我不能给你一个可靠的例子,但要寻找其他SO线程。

1

MVC模式“需要”您将所有“业务逻辑”插入到模型中。模型用于访问数据库并获取数据,并以一种只需使用控制器将其分配给View的方式进行模型化。

一个图形化的例子:http://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

不用说或许,你可以绕过使用的模型和写在控制器的所有你的逻辑,但这样会导致非常广泛,可能是多余的代码量。通过使用控制器,您可以调用模型和视图,只需几行代码就可以将信息从一个地方交换到另一个。

3

不错的问题,这是主观的,有很多解决方案,它归结于我认为的环境和个人的喜好。

随着MVC的ASP.Net实现,很多人都谈论模型更像是一个ViewModel而不是一个模型,就像其他一些框架(有些DTO)一样。考虑到这一点,将Controller视为应用程序流程的协调者,在通过某种类型的服务访问的附加层中生成列表并不会产生错误。您将向该服务请求一组符合指定标准的ViewModel,并让该额外层担心这些标准的生成方式。通过这种方式,所有控制器需要知道的事情是将一些标准传递给服务并为视图提供一组模型(视图模型)来显示,该视图不会做出关于如何处理其提供的数据的任何决定,而且这些模型很不错,很轻便。

希望这个解释是有道理的,如果人们不同意我可以批评...