• MVC从Controller到View的呈现


           图说MVC底层运行机制:

           当路由机制已经激活Controller并InvokeAction后,如果返回的是View, 则ViewResult基于View呈现的请求响应机制内部借助MVC提供的View引擎来实现对View的获取、激活和呈现。

           ASP.NET MVC提供的View引擎有两种,一种是传统的Web Form引擎(.aspx),另一种那个就是要讲的Razor引擎(.cshtml/vbhtml)。

           View引擎的核心是ViewEngine对象,它实现IViewEngine接口,IViewEngine定义了两个FindView和FindPartialView方法,根据指定的ControllerContext、View名称和布局文件名称获取对应的View和PartialView;还有用于释放View对象的ReleaseView方法。

           ViewEngines是一个类型为IViewEngine的ViewEngine的集合,它的静态只读属性Engines的类型是ViewEngineCollection。

           ViewEngineCollection中的FindView/FindPartialView方法返回的类型是ViewEngineResult。

           ViewEngineResult的只读属性View和ViewEngine属性表示的是找到的View对象和作为调用者的ViewEngine对象。在成功获取到对应View的情况下这两个属性会通过构造函数进行初始化。如果没有找到相应的View,则将表示搜寻位置的字符串列表传入另一个构造函数来创建返回的ViewEngineResult,只读属性SearchedLocation表示的就是这么一个搜寻位置列表,如下图所示(由于WebFormViewEngine排在RazorViewEngine之前,所有前者会被优先使用。):

     

            Razor引擎中的View和ViewEngine对应的类型为RazorView和RazorViewEngine。RazorView对应一个以.cshtml/.vbhtml文件定义的View文件,这样的文件通过ASP.NET的动态编译生成一个WebViewPage<TModel>类型。RazorView通过激活的WebViewPage<TModel>对象实现了对View的最终呈现。

     附ActionResult类型:

  • 相关阅读:
    计算机网络基础,子网掩码,网络号,子网号,主机号主机数量计算方式
    Nginx配置大全与搭建手册
    Windows10仿mac-os主题
    kali-linux知识整理与渗透测试指南
    简单的钓鱼网站制作-Setoolkit
    渗透测试常用工具-Metasploit_常用模块
    提权方式及原理简介(面试)
    修改dedecms精简版
    内网存活主机探测的一些方法
    免杀测试
  • 原文地址:https://www.cnblogs.com/Vam8023/p/8453966.html
Copyright © 2020-2023  润新知