MVC执行过程
2015-09-16 15:49
267 查看
服务器在接收请求后,会解析url,从中找到请求的类的名字,并在类名后加上Controller作为真实的类名
当浏览器发送localhost:xxx/Home/Index请求时,服务器创建HomeController对象并调用Index方法,Index方法返回内容发给浏览器
url请求直接来到Controller中(Controller控制器)--->Controller从Model中取数据(Model模型)--->Model可能会去访问数据库--->Controller根据业务逻辑,选择合适的View呈现给客户端(View视图)--->View返回给客户端
IIs→AspNetRuntime→Controller→View→Response
所有的ASP.NET Web应用程序执行的入口是HttpApplication的Application_Start()方法,这个方法被调用时会反过来调用RegisterRoutes()方法。其中RouteTable.Routes是一个公开的静态对象,用于存储所有的Routing的规则集(RouteCollection类)
Global.asax文件中RegisterRoutes方法
所谓的路由是URL到控制器类(Controller)的某个方法(Action)的映射,ActionResult方法必须是Public
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
其含义是:
1.MapRoute的第一个参数的意思是定义一条默认的路由规则,当然可以定义很多规则。其名字为“Default”
2.第二个参数就定义了什么样的URL格式才能被解析,其格式为http://www.websitename.com/控制器的类名/方法名/可选的参数 ,注意其命名规则,一般控制器的名字为HomeController,那么访问的时候控制器名为Home而不是完整的HomeController,如:http://localhost:45269/Home/Index
3.第3个参数定义的是一个默认的值,也就是输入http://www.websitename.com的时候默认会访问哪个控制器以及Action方法。采用的是.net 3.5的匿名类语法。注意这个默认的控制器与Action并不是一起控制的,比如定义的默认控制器为Home,那么访问http://www.websitename.com就会访问Home控制器的index方法,定义的默认控制器为index,那么你访问bbb控制器的时候如http://www.websitename.com/bbb就会访问bbb控制器的index。
当浏览器发送localhost:xxx/Home/Index请求时,服务器创建HomeController对象并调用Index方法,Index方法返回内容发给浏览器
url请求直接来到Controller中(Controller控制器)--->Controller从Model中取数据(Model模型)--->Model可能会去访问数据库--->Controller根据业务逻辑,选择合适的View呈现给客户端(View视图)--->View返回给客户端
IIs→AspNetRuntime→Controller→View→Response
所有的ASP.NET Web应用程序执行的入口是HttpApplication的Application_Start()方法,这个方法被调用时会反过来调用RegisterRoutes()方法。其中RouteTable.Routes是一个公开的静态对象,用于存储所有的Routing的规则集(RouteCollection类)
Global.asax文件中RegisterRoutes方法
所谓的路由是URL到控制器类(Controller)的某个方法(Action)的映射,ActionResult方法必须是Public
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
其含义是:
1.MapRoute的第一个参数的意思是定义一条默认的路由规则,当然可以定义很多规则。其名字为“Default”
2.第二个参数就定义了什么样的URL格式才能被解析,其格式为http://www.websitename.com/控制器的类名/方法名/可选的参数 ,注意其命名规则,一般控制器的名字为HomeController,那么访问的时候控制器名为Home而不是完整的HomeController,如:http://localhost:45269/Home/Index
3.第3个参数定义的是一个默认的值,也就是输入http://www.websitename.com的时候默认会访问哪个控制器以及Action方法。采用的是.net 3.5的匿名类语法。注意这个默认的控制器与Action并不是一起控制的,比如定义的默认控制器为Home,那么访问http://www.websitename.com就会访问Home控制器的index方法,定义的默认控制器为index,那么你访问bbb控制器的时候如http://www.websitename.com/bbb就会访问bbb控制器的index。
相关文章推荐
- sybase从表A创建表B
- Android采用HTML设计软件界面
- Mapreduce(二):MR的执行过程分析
- Node.js的颠覆者:PHP的Swoole扩展
- struts2+spring4+hiobernate4整合sitemesh导致jsp页面引入的js失效解决方案
- (转)Linux Socket
- 假如与众不同算是一个战略,那么什么才算是战术
- 第二十六课 利用switch语句解决问题 【项目1-7】
- Android Annotation (AndroidStudio配置)
- 读“关于数据科学,书上不曾提及的三点经验”对数据挖掘,机器学习方面的实战感悟
- 常见SSL证书格式转换
- 代码审核 - 优先级别
- 【面试季之三】IE6兼容问题
- MVC文件夹
- 理解Java的封装与接口
- visio二次开发——图纸解析之线段
- 详解C++编程中类的声明和对象成员的引用
- unix/linux编程实践教程------学习笔记(四)
- 大数据Big Data
- 闭包漫谈(从抽象代数及函数式编程角度)