什么是MVC 设计模式
从工程结构上讲, 创建一个ASP.net MVC 项目,控制器和视图各自在Controller和view文件夹下。工程结构清晰、一目了然。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示。
视图
视图是模型的表示,它提供用户交互界面。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。 这都归功于强大的HtmlHelper类。
MVC没有沿用Asp.net的自带控件,而是完全利用HtmlHelper类封装了Html常用组件。
HtmlHelper中的控件,很容易用户的扩展。下面举几个例子
给Password 加上样式
<%=Html.Password("myPassword", 50,"",new { style = "width:100px" })%><br />
按钮绑定到自定义Javascript响应 函数
<%=Html.Button("cmdJS","Click Me","DoTheClickThang()")%>
使用图片button
<%=Html.Button("cmdJS","~/Images/Clicky.png","DoTheClickThang()")%>
控制器 Controller
为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。因此,为了达到集中管理的目的引入了控制器。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。
控制器中返回视图的方法主要有以下几种
a)       View – 返回一个ViewResult结果。
b)       Redirect – 返回一个RedirectResult 动作结果。
c)       RedirectToAction – 返回一个RedirectToAction动作结果。
d)       RedirectToRoute – 返回一个RedirectToRoute动作结果。
e)       Json – 返回一个JsonResult动作结果。
f)          Content – 返回一个ContentResult动作结果。
比如,如果你想向浏览器返回一个视图,你可以调用View()方法。如果你想要从一个控制器动作重定向到另一个,你可以调用RedirectToAction()方法
 
模型
  MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类
 
视图绑定到模型
模型可以是数据库生成的实体,扩展实体,继承等派生出的实体类,也可以是自己定义的数据类。创建视图的时候,可以选择工程中存在的实体,从而页面自动绑定到实体。
下面定义了一个结构
public class Product
    {
        public int ID { get; set; }
        public string Description { get; set; }
        public Category  myCatetory { get; set; }
    }
    public class Category
    {
        public int ID { get; set; }
        public string Title { get; set; }
    }
如何绑定到该实体上呢,可以new一个新的实体,然后再绑定。
 
public ActionResult Create(Product product)
{
       Return View();
}
Product vProduct = new Product();
// 初始化vProduct 的内部属性
Return View(“Create”, vProduct);
从上面的例子,可以看出MVC 可以绑定一个很复杂的模型,因此可以通过JQuery、AJAX等手段通过异步方式更新局部的MVC 页面。
MVC设计模式的扩展
  通过在ASP.NET中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:
  ①实现一个模型的多个视图;
  ②采用多个控制器;
  ③当模型改变时,所有视图将自动刷新;
  ④所有的控制器将相互独立工作。
  这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图下图所示。

推荐文章:MVC设计模式的优点和缺点

此文“什么是MVC设计模式”来自于百洋软件研究实验室

posted on 2009-08-24 17:36  LanrenXuan  阅读(10823)  评论(0编辑  收藏  举报