ASP.NET MVC入门1、简介
什么是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页面来呈现给用 户。简单的示意图如下所示: 也就是一个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的项目: 注:如果你的是中文版的VS,安装完后可能会出现找不到这个模板的现 象,你可以参考在中文版VS 08中安装MVC这篇文章设置一下。 建立一个 ASP.NET MVC项目后,默认的项目大概如下图: 我们可以看到项目中有几个文件夹的命名和MVC(Model-View- Controller,模型—视图—控制器模式)是对应的。然后我们运行一 下项目看看: 我们注意到地址栏的URL是 Home/Index,如果按照我们前面说的WebForm的模式的 话,我们应该可以在我们的项目的根目录下找到Home目录,然后Home目录下有个 Index的文件,但是我们并不能在根目录下找到Home这个目录。不过还是让我们在 Views目录下找到了Views/Home/Index.aspx文件,我们输入这个地址运行看看: Oh,No!路径是对的,文件也存在,但为什么会是404,说找不到文件呢 ?如果不是直接访问存在的物理文件,那么MVC又是怎样工作的呢? 原来 啊,MVC模式的工作过程是这样的: 在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后 由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选 择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的 http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中 的Index这个Action,见下图: 其中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文件去 看一下: 我们可以看到这里定义了一个名为"Default"的Route,还定 义了默认的参数。默认参数的意义在于,当我们访问例如 http://localhost:2176/的URL的时候,他会将不存在的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |