1:什么是MVC模式
MVC(Model-View-Controller)是一种软件架构模式,把软件系统分为一下三个基本部分:
控制器(Controller) :控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。
这三部分基本的关系图:
2:MVC基本原理
a:定位Controller:
在mvc中,客户端所请求的URL首先被映射到相应的Controller中,然后由Controller来处理业务逻辑,例如从Model中取数据,然后由Controller选择合适的View返回给客户端。如果我们的ASP.NET MVC程序访问的是http://localhost:2176/Home/Index,那么它访问的其实是HomeController中的Index这个Action.如下图:
其中 public ActionResult Index()这个方法称为Controller的Action,他返回的是ActionResult的类型。一个Controller可以有很多个Action。
b:返回View
我们从前面的截图中看到,Controller中的Action方法中有个return View()的方法。默认情况下它会返回与Action同名的view.在ASP.NET MVC默认的视图引擎(WebFormViewEngine)下,view是按如下路径访问的:
/Views/{Controller}/{Action}.aspx
也就是说对于http://localhost:2176/Home/Index这个路径,在默认情况下,在Index这个Action中用return View()来返回view的时候,会去寻找/Views/Home/Index.aspx文件,如果找不到这个文件,就会去Share目录中寻找:/Views/Share/Index.aspx,如果都找不到,就会抛出找不到View的异常。
这就是为什么如果我们直接访问Index.aspx的话会出现404的错误,因为在MVC整个数据传输机制里是不建议直接访问View的,我们可以在MVC程序Views目录下的默认配置文件里找到原因:
也就是访问Views目录下的所有的文件都会由System.Web.HttpNotFoundHandler来处理。