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

  • 相关阅读:
    2015-2016-1 《信息安全系统设计基础》学生博客列表
    2014-2015-2 《Java程序设计》课程学生博客列表
    立此存照-抄袭作业者的曝光台
    实验三 敏捷开发与XP实践
    实验二 Java面向对象程序设计
    《Linux及安全》实验安排
    实验一 Java开发环境的熟悉
    ISO-OSI的七层协议经典架构
    iOS设计模式之单例模式
    使用iOS手势UIGestureRecognizer
  • 原文地址:https://www.cnblogs.com/Vam8023/p/8453966.html
Copyright © 2011-2022 走看看