您的位置:首页 > 编程语言 > ASP

Asp.Net MVC基础

2011-06-21 11:51 239 查看
【转】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的。

类别:web技术

|


| 添加到搜藏

| 分享到i贴吧

| 浏览(22
)
| 评论
(0)

上一篇:html控件、html服务器控件和web...
下一篇:匈牙利命名法,骆驼命名法,帕斯...

相关文章:

ASP.NET MVC 2 Custom Validatio...
         

为ASP.NET MVC扩展异步Action功...

为ASP.NET MVC扩展异步Action功...
         

在ASP.NET MVC 中使用自定义过滤...

什么是ASP.NET MVC,以及其优点概...
         

IIS 6.0部署ASP.NET MVC 2.0方法...

ASP.NET MVC 不同的 ActionResul...
         

[翻译]ASP.NET MVC 教程 - 使用...

【ASP.NET自己写MVC框架】初步实...
         

【ASP.NET自己写MVC框架】 从截...
更多>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: