zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    PE文件捆绑实现二:(远程线程注入)
    C++中Vector清空
    ttrss更新到最新版本后发访问非80和443端口规避
    Git配置https_proxy访问github失败
    Haproxy配置拦截指定src的连接
    synology git管理程序添加
    ActiveMQ深入浅出系列 (一)
    sl4fj日志级别
    HTTP上传文件解析
    linux下jcmd无法获取jvmdump
  • 原文地址:https://www.cnblogs.com/genesis/p/4813544.html
Copyright © 2011-2022 走看看