zoukankan      html  css  js  c++  java
  • C# MVC 5

    本文是根据网上的文章总结的。

    1.介绍

    本文讨论ASP.Net MVC框架MVC的请求生命周期。

    MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期。

    2.应用程序生命周期

    image

    应用程序生命周期是指在申请过程实际开始运行IIS,直到它停止的时间。这是通过在应用程序中的启动文件的应用程序开始和结束标记事件。

    3.请求生命周期

    发生每一HTTP请求是由我们的应用处理的时间的事件序列。

    入口点为每个MVC应用始终由ASP.NET收到请求后,计算出应该如何通过URL路由模块来处理。

    image

    1)Routing 路由

    ASP.NET MVC生命周期中第一个步骤就是路由,路由的过程是根据请求的Url和注册好的路由规则进行匹配,当一旦找到一个与之匹配找路由规则时,ASP.NET MVC路由引擎就把这个请求交给相应的Handler处理。如果没匹配,则返回404错误。

    注册路由,首先从Global.asax上面注册:

    image

    然后我们看到RouteConfig.cs的配置:

       public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { action = "Index", id = UrlParameter.Optional }
                );
            }
        }

    2)Controller 控制器

    Controller是MVC最核心的组件,他是连接View与Model的桥梁,在Controller内部会有相应的Action方法,可以决定请求返回的视图或数据。

    3)Action Excution

    一旦Controller被创建并初始化以后,里面的Action就开始上场了。这里ASP.NET MVC的框架的一个核心组件ActionInvoker就决定了请求到底是哪一个Action的方法。Action方法是真正接收请求的处理方法。

    Action接收用户的输入,进行相应的逻辑处理并把要返回的数据Model准备好了之后传给相应的视图。

    4)View Engine 视图引擎

    Action方法的作用是接受输入,然后进行一定的处理并准备响应数据,最后返回一个View Result类型实例。返回的View Result类型这些类型:ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, and EmptyResult等等。

    当我们在Action方法的最后返回一个View Result的时候,ASP.NET MVC框架首先就会选择相应的视图引擎来返回视图。ASP.NET视图引擎都会实现接口IViewEngine。默认ASP.NET MVC框架为我们提供了接口IViewEngine两个实现,视图引擎WebForm和Razor。

    View视图其实就是一个模板的作用,它是把Action传过来的数据绑定到视图文件中并显示到页面中。

    另附上一个网上的MVC请求生命生命周期图,供大家更好地理解:

    image

    可以关注本人的公众号,多年经验的原创文章共享给大家。

  • 相关阅读:
    ajax提交转码解码
    关于idea开发工具常用的快捷键
    oracle 查询某个时间段数据
    hibernate : object references an unsaved transient instance 问题
    log4j日志
    JS关键字 import
    代码正常,junit却报错原因及解决方法
    hdu 5868 Polya计数
    hdu 5893 (树链剖分+合并)
    hdu 5895 广义Fibonacci数列
  • 原文地址:https://www.cnblogs.com/alunchen/p/6252846.html
Copyright © 2011-2022 走看看