MVC简介

  之前自学了MVC的知识点,由于在工作中并未使用到。所以过久了就忘记一部分惹,再来从头小小的复习一下:

一。什么是MVC模式?

MVC(Model-View-Controller,模型-视图-控制器)模式其实 就是一种软件架构模式。

二。MVC和WebForm工作流程的区别图片及内容来自http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html

WebForm中,当User请求一个页面(例如http://www.51mvc.com/blog/index.aspx)时的工作流程如下:

image   

   从上图可以清晰的看到,WebForm程序会到网站根目录下去寻找blog目录下的Index.aspx文件,然后由index.aspx页面的CodeBehind文件(.cs文件)进行逻辑处理,而CodeBehind中或许包含到数据库去取出数据,然后再由Index.aspx页面来呈现给用户。

再来看MVC程序,当用户请求一个页面时(例如http://www.51mvc.com/blog/index.aspx),其工作流程:

image 

从上图可以清晰的看到,在MVC中:

在客户端所请求的URL是被映射到相应的Controller去;

然后由Controller来处理业务逻辑,或许要从Model中取数据;

然后再有Controller选择合适的View返回给客户端。

例如我们运行ASP.NET MVC程序访问的http://localhost:62106/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action,见下图:

image 

那么,URL是怎么被定位到Controller中的呢?

   ---通过路由,而具体的URL会被路由到哪一个Controller中去,这些可以完全由我们自己定义。我们可以在Global.asax文件中去看一下:

image

那么,View又是怎么被返回客户端的呢?

---Controller中的Action方法中有个return View()的方法。默认请款下它返回与Action同名的View.在ASP.NET MVC默认的视图引擎(WebFormViewEngine)下,View是按照如下路径访问的:

/Views/{Controller}/{Action}.aspx

对于URL http://localhost:62106/Home/Index, 在默认情况下,在Index这个Action中用return View()来返回View的时候,会执行如下两步:

1. 去寻找Views/Home/Index.aspx文件;

2. 如果找不到Views/Home/Index.aspx这个文件,就会去Share目录中寻找:Views/Share/Index.aspx;

3. 如果都找不到,就会抛出找不到View异常。

但是,当我们直接去访问Views/Home/Index这个路径,它会出现404错误,说找你不到文件,Why?

---因为在MVC中,是不建议直接去访问View的,所以我们建立的ASP.NET MVC程序在默认情况下就在Views目录下加了一个Web.config文件,其中有如下内容:

image

   上图的意思就是说,访问Views目录下的所有的文件都会由System.Web.HttpNotFoundHandler来处理,所以不要将资源文件(CSS,JS,图片等)放在Views目录中。如果确实要放到Views目录下的话,请修改Views/web.config文件。

原文地址:https://www.cnblogs.com/erhanhan/p/8535316.html