码迷,mamicode.com
首页 > Web开发 > 详细

MVC从Controller到View的呈现

时间:2018-02-19 17:29:42      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:arch   asp.net   两种   http   partial   就是   生成   分享   优先   

 

技术分享图片

       当路由机制已经激活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的最终呈现。

 

MVC从Controller到View的呈现

标签:arch   asp.net   两种   http   partial   就是   生成   分享   优先   

原文地址:https://www.cnblogs.com/Vam8023/p/8453966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!