注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一车,一房,一个温暖家

10万左右的车,80平方的房子,这是我奋斗的暖暖的家

 
 
 

日志

 
 

引用 ASP.NET MVC 框架之执行流程(三)   

2015-06-25 06:42:01|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本系列文章转载自:http://hi.baidu.com/wikiweb  感谢作者!

一,基本概念:
在传统情况下,http: //localhost/Default.aspx表示请求网站根目录下的Default.aspx文件。
在ASP.NET MVC中,Routing处理一切请求,然后从请求的URL中确定controller名称、action名称和各种参数。
Controller执行对应的Action,Action处理表现逻辑或者跳转等。默认是不执行任何xxx.aspx文件请求的。
这也是使用了ASP.NET MVC后与传统ASP.NET应用最大的差别。详细流程如下,
二,框架执行顺序:

ASP.NET MVC 框架之执行流程(三) - Great Wang - 追求属于自己的一切!


如上图所示,
首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http:// HostName/ControllerName/ActionName/Parameters的样子。
这个请求被ASP.NET MVC的路由映射系统截获。路由映射系统按照映射规则,解析出控制器名ControllerName,Action名ActionName和各个参数Parameters,然后,找寻Controllers目录下的ControllerNameController.cs这个控制器类,默认情况下,系统总是找寻Controllers目录下的“控制器名+Controller”这么一个类。
然后,找寻这个类下与ActionName同名的方法,找到后,将Parameters作为参数传给这个方法,而后Action方法开始执行,执行后返回的是ActionResult类型(可以是view、json、redirect等)。
ActionResult其中的一个类型是视图,默认情况下,会返回Views目录下与ControllerName同名的目录下的与ActionName同名的aspx文件,并且将ViewData传递到视图。ViewData中一般包含了控制视图显示的控制量以及视图显示需要的数据,ViewData是控制器与View传递数据的方法之一。
      我们按以上思路回顾一下上一篇中主页的请求过程。我们传递的url是http: //localhost/Home/Index。默认路由规则下,将ControllerName设为“Home”,ActionName设为“Index”,没有参数。
于是系统找寻Controllers目录下的HomeController类的Index方法,成功找到,于是执行之。
这个方法调用Model取出一些数据,放入ViewData相应键值项里。然后返回视图,返回的是Views下Home下的Index.aspx。
这个视图取出ViewData中的数据按照一定格式呈现,于是完成了一次典型的ASP.NET MVC调用。

下一篇中我们将详细介绍URL routing。

---------------------------------------------------------------------------
参考资源:
构建不带 Web 窗体的 Web 应用程序
http://msdn.microsoft.com/zh-cn/magazine/cc337884.aspx
一个简单的ASP.NET MVC应用程序
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032374939&Culture=zh-CN
ASP.NET MVC全局观
http://www.cnblogs.com/leoo2sk/archive/2008/11/01/1324168.html

  评论这张
 
阅读(10)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018