MVC:关于数据访问的视图和模型交互等

leo*_*ora 7 c# model-view-controller

模型应该只是数据结构吗?MVC中的服务(数据访问,业务逻辑)在哪里?

让我们假设我有一个显示客户订单列表的视图.我有一个控制器类来处理视图控件(按钮等)上的点击.

控制器应该启动数据访问代码吗?单击Think按钮,重新加载订单查询.或者这应该通过模型层?

任何示例代码都会很棒!

Jim*_*ran 7

通常我按如下方式实现MVC:

视图 - 从控制器接收数据并生成输出.通常,此处仅显示逻辑逻辑.例如,如果您想要获取现有网站并生成其移动/ iPhone版本,您应该只需更换视图(假设您需要相同的功能)即可.

模型 - 包裹对模型中数据的访问.在我的应用程序中,所有SQL都存在于模型层中,视图或控制器中不允许直接访问数据.正如Elie在另一个答案中指出的那样,这里的想法是(至少部分地)将控制器/视图与数据库结构的变化隔离开来.模型也是实现逻辑的好地方,例如每当字段更改时更新"上次修改"日期.如果应用程序的主要数据源是外部Web服务,请考虑是否将其包装在模型类中.

控制器 - 用于将模型和视图粘合在一起.在此处实现应用程序逻辑,验证表单,将数据从模型传输到视图等.

例如,在我的应用程序中,当请求页面时,控制器将从模型中获取所需的任何数据,并将其传递给视图以生成用户看到的页面.如果该页面是表单,则可以提交表单,控制器处理验证,创建必要的模型并使用它来保存数据.

如果您遵循此方法,模型最终会非常通用且可重用.您的控制器具有可管理的大小和复杂性,因为数据访问和显示已分别移除到模型和视图,并且您的视图应该足够简单,以便设计人员(通过一点培训)可以理解它们.