MVC动作处理结束后返回视图结果ActionResult,视图结果到前端浏览器显示需要经过视图引擎处理。
MVC中Razor视图引擎是标准。
视图引擎是实现了IViewEngine接口的类定义。
IView接口

接口所需上下文参数ViewContext 继承自ControllerContext,上下文中有客户端请求的详细信息。
IViewEngine接口

namespace System.Web.Mvc { // 摘要: // 定义视图引擎所需的方法。 public interface IViewEngine { // 摘要: // 使用指定的控制器上下文查找指定的分部视图。 // // 参数: // controllerContext: // 控制器上下文。 // // partialViewName: // 分部视图的名称。 // // useCache: // 若指定视图引擎返回缓存的视图(如果存在缓存的视图),则为 true;否则为 false。 // // 返回结果: // 分部视图。 ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache); // // 摘要: // 使用指定的控制器上下文来查找指定的视图。 // // 参数: // controllerContext: // 控制器上下文。 // // viewName: // 视图的名称。 // // masterName: // 母版的名称。 // // useCache: // 若指定视图引擎返回缓存的视图(如果存在缓存的视图),则为 true;否则为 false。 // // 返回结果: // 页视图。 ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache); // // 摘要: // 使用指定的控制器上下文来释放指定的视图。 // // 参数: // controllerContext: // 控制器上下文。 // // view: // 视图。 void ReleaseView(ControllerContext controllerContext, IView view); } }
ViewEngine返回ViewEngineResult,结果将数据返回MVC框架处理。
实现IViewEngine接口的自定义引擎,需要注册到框架中。MVC中引擎使用ViewEngines类Engines集合存储现在视图引擎。
调用ViewEngines.Engines.Clear() 方法清空已经视图引擎。使用ViewEngines.Engines.Add()方法注册新的视力引擎。