MVC执行过程

服务器在接收请求后,会解析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。

原文地址:https://www.cnblogs.com/genesis/p/4813544.html