快速业务通道

ASP.NET MVC入门1、简介

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

什么是MVC模式

MVC(Model-View-Controller,模型—视图 —控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部 分:模型(Model),视图(View)和控制器(Controller)。

那么MVC模 式和我们熟悉的WebForm模式有什么不同呢?他的各个部分又是怎样分工的呢?

我们先来看一下普通的WebForm模式下,我们请求一个例如 http://www.51mvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网 站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的 CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据( 其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用 户。简单的示意图如下所示:

ASP.NET MVC入门1、简介

也就是一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX 文件或其他),然后由该文件来处理这个请求并返回结果给客户端。

但是 ,对于MVC模式,这是怎样的一个过程呢?

我们先来建一个ASP.NET MVC的 项目吧。VS2008默认是没有ASP.NET MVC的项目模板的,首先我们需要到 http://www.microsoft.com/downloads/details.aspx?FamilyId=A24D1E00-CD35 -4F66-BAA0-2362BDDE0766&displaylang=en去下载最新的ASP.NET MVC的安装 程序,目前最新版本的Microsoft ASP.NET MVC Beta(10/15/2008)。下载安装完 后,我们可以在新建项目那里找到ASP.NET MVC的项目:

ASP.NET MVC入门1、简介

注:如果你的是中文版的VS,安装完后可能会出现找不到这个模板的现 象,你可以参考在中文版VS 08中安装MVC这篇文章设置一下。

建立一个 ASP.NET MVC项目后,默认的项目大概如下图:

ASP.NET MVC入门1、简介

我们可以看到项目中有几个文件夹的命名和MVC(Model-View- Controller,模型—视图—控制器模式)是对应的。然后我们运行一 下项目看看:

ASP.NET MVC入门1、简介

我们注意到地址栏的URL是 Home/Index,如果按照我们前面说的WebForm的模式的 话,我们应该可以在我们的项目的根目录下找到Home目录,然后Home目录下有个 Index的文件,但是我们并不能在根目录下找到Home这个目录。不过还是让我们在 Views目录下找到了Views/Home/Index.aspx文件,我们输入这个地址运行看看:

ASP.NET MVC入门1、简介

Oh,No!路径是对的,文件也存在,但为什么会是404,说找不到文件呢 ?如果不是直接访问存在的物理文件,那么MVC又是怎样工作的呢?

原来 啊,MVC模式的工作过程是这样的:

ASP.NET MVC入门1、简介

在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后 由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选 择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的 http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中 的Index这个Action,见下图:

ASP.NET MVC入门1、简介

其中public ActionResult Index()这个方法称为Controller的Action ,他返回的是ActionResult的类型。一个Controller可以有很多个Action。

那么一个URL是怎样被定位到Controller中来的呢?我们先来看一下 web.config文件,在web.config文件的httpModules配置节中,我们可以看到一个 UrlRoutingModule:

<addname="UrlRoutingModule"type="System.Web.Ro uting.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutr al,PublicKeyToken=31BF3856AD364E35"/>

就是这个 UrlRoutingModule来把URL定位到Controller中去的。而对于URL会被路由到哪一 个Controller中去,这些我们是完全可以自己定义的。我们到Global.asax文件去 看一下:

ASP.NET MVC入门1、简介

我们可以看到这里定义了一个名为"Default"的Route,还定 义了默认的参数。默认参数的意义在于,当我们访问例如 http://localhost:2176/的URL的时候,他会将不存在的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号