Asp.Net MVC基础

 
【转】Asp.Net MVC基础
2011-04-28 10:15

Asp.Net MVC基础 

 

1. MVC是什么?

   MVC是Model-View-Control的简称,它是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,它强制性的使应用程序的输入、处理和输出分开,使MVC应用程序被分成三 个核心部件:模型(Model)、视图(View)、控制器(Controller)。它们各自处理自己的任务。其中,

    Model:用于存储数据的组件。

    View:根据Model数据进行数据内容展示的组件。

    Control:接受并处理用户指令。操作Model,选择一个合适的View并输出内容。   

  MVC强制性的把web应用程序分成M V C 3个部分,由于各个部分相对独立,大大降低了程序的耦合性,更利于web项目的分工协作开发,也提高了程序的可测试性。同时多个View可以共享一个Model,从而提高了程序的可重用性和可适用性。  

 

 

  2. Asp.Net MVC 项目中这3个部件被放在哪里?

  在Visual Studio中创建一个MVC Project 就一目了然了。

 

  3. Asp.Net MVC中的Controller是怎么选择Model和View的呢?

  当一个URL请求来到时,asp.net mvc handler会把它交给一个Controller,Controller从数剧源得到一些数据,并运用业务逻辑规则得到一个Model,再把这个Model传递给View,通过View把页面呈现给用户。

   每个controller类中都有一些返回值是ActionResult的Method,这些Method被称作Action。Mvc Handler会根据请求的URL选择一个相应的controller/action来执行。在action中,我们从数据源取得一些数据,并根据业务规 则得到一个Model,并在action里面执行code:ViewData.Model = myModel;,这样这个Model就会被保存在返回的ActionResult里,然后ActionResult.ExecuteResult()方 法被执行。

  在ExecuteResult方法中,调用IViewEngine.FindView()来得到一个 ViewEngineResult,这里ViewEngineResult.View(IView对象)一般代表一个具体的页面,如一个.aspx页面。 调用ViewEngineResult.View.Render(new ViewContext(...,ViewData,...))方法,就可以把含有Model的View展示给用户了。

  既然 Asp.Net Mvc中抽象除了IView 和 IViewEngine这2个接口,那么我们就可以自己实现这2个接口。这样IView除了可以和磁盘上的.aspx文件对应外,还可以代表一个.txt 文件,或者.pdf文件,或者...,只要我们实现了IView.Render()就行了。对于IViewEngine,只需要实现 IViewEngine.FindView()就行了,于是我们就有了改变具体文件存放路径的权利了。

 

  4.请求是怎么被交给Mvc Handler的呢?又是怎么选择正确的action的呢?

   我们可以看一下Windows/Microsoft.NET/Framework/v4.0.30319/Config/web.config文件,里 面配置了一个叫UrlRoutingModule的HttpModule。在asp.net mvc project 中,这个module会在asp.net管道的PostResolveRequestCache事件中生成MvcHandler,并用他代替默认的 asp.net handler来处理请求。

  选择action的关键点在Global.asax.cs文件中。里面有一个方法 RegisterRoutes(RouteTable.Routes),RouteTable中存放的是一些路由规则,MvcHandler正是根据他们 来匹配URL和Controller/Action的。


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值