asp.net MVC处理流程
asp.net MVC处理流程
asp.net MVC处理流程一、asp.net MVC处理流程主要包含8个步骤:
1、RouteTable(路由表)的创建
2、UrlRoutingModule 请求拦截
3、Routing engine 确定route
4、route handler 创建相关的IHttpHandler实例
5、IHttpHandler实例确定Controller(控制器)
6、Controller执行
7、一个视图引擎创建
8、视图呈现
二、asp.net MVC处理流程的图形表示
三、在MVC处理底层之上,相关流程如下
1、Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteConfig.RegisterRoutes(RouteTable.Routes); 来注册路由规则
2、RouteConfig.RegisterRoutes()方法里,给出的默认规则为 {controller}/{action}/{id}
a. 在有特别需要的时候,到这里来修改规则。
b. 未指明Controller默认为HomeContoller,未指定Action默认为Index, 也就是说,直接访问站点时,会默认导航到HomeController下的Index Action.
c. Action后跟的内容会被映射为名为id的参数。 比如: User/Delete/1 会匹配到 UserController的 Delete(int id) 方法。
d. Action分为[HttpGet]和[HttpPost]两种,与HTTP的GET和POST方式对应。 即直接请求的URL只会匹配[HttpGet]方法,而未注明[HttpPost]的方法即默认为[HttpGet]. Post的Action一般会有一个Model参数,MVC会自动将表单里的数据按约定的规则填充到Model实体对象里。 这个约定的规则,就是表单的Name与属性名称有个对应规则。
3、MVC负责按上述规则将执行流程导入合适的Action中,即Controller的某个方法中
4、Action中,可以直接返回字符串,输出到浏览器, 也可以返回到ActionResult对象, 该对象指向一个View页面,并且附带了一些属性作为传递数据的容器
ActionResult通常通过调用Controller对象的View(…)方法得到,也可以通过Redirect()方法或 RedirectToAction()方法得到, 不过后面两种方法主要用于跳转到其它Controller,因为后面的方法不能传递Model对象。 Action向View传递数据,可以通过Model、ViewBag或ViewData三种容器,其中Model是强类型的,所以是最优先的方式。
5、View中,会先执行本身,再执行模板页和子页, 但是执行顺序和页面内容的输出顺序并不一致。模板中后输出的内容可以在页面中先输出的内容的前面
- MVC中JavaScriptResult
- php框架制作方法(PHP从零开始打造自己的MVC框架之路由类实现方法分析)
- mysql mvcc 流程(Mysql MVCC机制原理详解)
- Asp.net Mvc模型绑定
- mvc中@helper的用法
- MVC中BeginForm
- mvc中@RenderSection()
- python如何编写一个用户登录系统(Python实现的登录验证系统完整案例基于搭建的MVC框架)
- windows server 2008r2怎么安装(Windows Server2008 R2 MVC 环境安装配置教程)
- MVC中获取当前action、controller
- MVC中的ActionResult
- MVC中数据验证
- MVC上传文件的方法
- MVC升级后报"当前上下文中不存在ViewBag"错的解决方法
- asp.net MVC处理流程
- MVC Model验证
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
- 痴情男神 吴彦祖 与妻子恋爱8年,结婚10年,家庭幸福美满(痴情男神吴彦祖)
- 成功破圈,小牛电动SQi强势开 跨(小牛电动SQi强势开)
热门推荐
- laravel5.2模型返回数组(解决Laravel5.5下的toArray问题)
- dedecms搜索功能怎么设置详细(DEDECMS短标题标签调用与字数修改的方法)
- vueelementui侧边栏(Vue Element UI自定义描述列表组件)
- 手机网站设计的几个建议
- mysql查询killed状态的进程(MySQL kill指令使用指南)
- laravel命令控制器怎么设置(Laravel获取当前请求的控制器和方法以及中间件的例子)
- js判断是否为手机访问
- docker镜像和容器(使用docker build kit构建树莓派上可用的Docker镜像)
- css3渐变样式怎么用(CSS3 background-image颜色渐变的实现代码)
- 如何安全实现“记住我”的功能