asp.net mvc 分为主要的controller 、action、以及views
下面来分析asp.net mvc的处理流程:
controller 负责将获取model数据并将model传递个view对象,通知view对象显示。
处理流程:
1.用户发起请求---》urlrouting获取请求—》mvcroutehandler.gethttphandler()—>mvchandler.processrequest()
2.urlrouting获取浏览器发起的请求
将routdata与httpcontext合并成为requestcontext传递到irouthandler接口,irouthandler接口的实现类mvcroutehandler接口到requestcontext参数,返回一个mvchandler对象,并且为这个对象赋值requestcontext
3.mvchandler对象
根据requestcontext参数解析出routedata以及httpcontext,根据routedata来查找出controller以及对象的action及其parameters
4.mvchandler .processrequest()方法的处理流程
mvchandler对象根据工厂方法获取到具体的controller---->controller.execute()--->释放controller对象
这其中最主要的是mvchandler对象根据传入的requestcontext参数来获取到具体的controller,并执行其execute()方法
5.controller.execute()方法处理流程 查找action
获取action--->调用actionresult(abstract方法)的actionresult.executeresult()方法
6.actionresult.executeresult()方法
获取到iview对象,--》根据iview对象的页面路径获取到具体的page,--->调用iview.renderview()方法显示页面
iview对象中存储的是页面的路径地址,最终通过页面引擎(view engine)使用该路径生成具体的页面类,viewpage(system.web.mvc.viewpage)是实现了iview接口的对象。
7,最终页面就可以正确的显示。
viewpage.renderpartialview() 显示.ascx文件或者是viewpage.renderview() 显示.aspx文件。
现在mvc 3中使用的是razor视图引擎,和webformviewengine一样的处理流程
到此这篇关于asp.net mvc处理流程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。
发表评论