我和ASP.NET MVC有个约会

时间:2021-06-13 07:44:10

很早之前在项目中使用的软件架构模式,一直想着写一写加深自己对它的理解。但总是一天拖着一天,趁着现在闲,跟大家唠唠嗑这个东西。

首先什么是 MVC(Model-View-Controller) 呢?不得不说这是一个有情怀的思想,它把前后端的代码进行一次极大的解耦。当然这跟我们平常见到的三层是两个完成不一样的概念,它只对 UI 层的一种优化。

我们先来看看它长什么样的吧。

附图 MVC 简单模型:(其实它长的很简单有木有?能看还实用)

我和ASP.NET MVC有个约会

根据这个模型你大概就能知道 MVC 其实说白了就是把前后端给分离出来了,后台代码直接存放到 Controller 中,然后通过 Model 来进行数据的传递,前台接收到请求后通过 View 展示出来。

接下来我们通过 Visua Studio 2012 创建一个 MVC 3 的实例让您有更深刻的理解:

1.在 Visual C#  ->  Web 选择ASP.NET MVC 3 Web 应用程序

我和ASP.NET MVC有个约会

2.在进行这一步选择之前我们来了解下项目模板。从下图可看出有3个默认的模板,空模板 / Internet 应用程序 / Intranet应用程序 。

   1.空模板:创建完之后就是个空的 ASP.NET MVC 3 项目。

   2. Internet 应用程序:生成之后会自动帮我们创建一些文件,如 Home / Index 等

   3. Intranet 应用程序:跟 Internet 应用程序最大的区别就是一个是互联网而它是物联网,这当中有一个域的概念。今天聊的话题不是这个,暂不深究

这里我们选择 Internet 应用程序模板(这里我把这个窗体分为3个部分,模板 / 引擎 / 测试单元)

我和ASP.NET MVC有个约会

接下来是视图引擎的选择, MVC 给我们提供了2个视图引擎 Razor 和 ASPX 。那视图引擎是用来做什么的呢?这边我想您应该联想到了 View 。我们通过之前的 MVC 模型图可知道 View 在拿到数据后会把数据展现给用户,那是通过什么样的办法来展示给用户呢?渲染引擎,比如您在玩游戏的时候有的游戏会要求安装一个 DirextX 这种东西,它的功能就是要硬件加速,方便以视图的方式更快的渲染出来。而 View 的渲染引擎也是同个道理。那么在这里我们就选择 Razor 来当我们的视图引擎,和 ASPX 视图引擎的最大的明显区别就是 Razor 渲染出来的页面后缀是 .cshtml 而 ASPX 视图引擎则就是我们经常见到的 .aspx 页面。

这里顺便提一下第3个模块 创建单元测试项目 ,顾名思义就是可以为其创建一个测试单元。 今天的话题是初始 MVC ,就不聊这个测试的事了。

最后直接点确定,开始生成我们的第一个 MVC Demo ,画红框的就是生成之后的 MVC 结构中最核心的3个文件夹。其他的文件目录基本都是一些资源文件了。

我和ASP.NET MVC有个约会

其次比较值得介绍的当然是 Global.asax 文件了,它是一个解析文件。主要用于解析 HttpApplication 这一个类,总的来说所有的解析都会通过 MvcApplication 来完成解析。也就是说,当客户端发请求过来后,最先交给 MvcApplication ,它来决定调用某个 Controller 的某个 Action。

我和ASP.NET MVC有个约会

开始编译浏览下我们第一个 MVC 网站:

我和ASP.NET MVC有个约会

这里就会产生一个新的困惑,这个地址 http://localhost:23347/ 为什么没有特意指向某个地址就能访问到这个页面呢?实际上这个请求发起的过程中,URL 地址便省略一部分地址了,实际上的地址应该是:

http://localhost:23347/home/index ,而 /home/index 拆分出来,/home 对应的其实就是目录中的某个 Controller ,而 index 则就是对应 Controller 的某个Action

我和ASP.NET MVC有个约会