zoukankan      html  css  js  c++  java
  • View Engine 视图引擎(一) Kevin

    MVC 3 允许创建自己的视图引擎而不使用自带的Razor视图或者APSX视图。下面就介绍一下如何创建自定义的视图引擎。

    首先,View Engine 继承于 IViewEngine接口。IViewEngine接口的定义如下:

    1 public interface IViewEngine {
    2 ViewEngineResult FindView(ControllerContext controllerContext, string viewName,
    3 string masterName, bool useCache);
    4 ViewEngineResult FindPartialView(ControllerContext controllerContext,
    5 string partialViewName, bool useCache);
    6 void ReleaseView(ControllerContext controllerContext, IView view);
    7 }

    视图引擎的角色是将Request转换成ViewEngineResult,第一第二个方法的参数需要一个controllercontext,一个viewname,一个mastername和一个指定之前的结果是否可以在缓存中重用的参数。最后一个方法ReleaseView,当视图不在被使用将被释放时调用。

    ViewEngineResult 类允许视图引擎在视图需要展示时响应Request请求。你可以选择下列两种构造函数中的一个进行创建ViewEngineResult:

    1. public ViewEngineResult(IView view,IViewEngine viewEngine);

       该构造函数的参是使从IView接口和view Engine继承而来的。

       如果你的视图引擎并不能提供响应request的视图,你可以使用下面的构造函数:

    2. public ViewEngineResult(IEnumberable<string> searchLocations);

      这个版本的构造函数将在若干地方寻找视图文件,如果找不到将会显示错误信息。

    视图引擎系统中最后一个块内容是IView接口,如下面代码所示:

    1 namespace System.Web.Mvc {
    2 using System.IO;
    3 public interface IView {
    4 void Render(ViewContext viewContext, TextWriter writer);
    5 }
    6 }

    我们把一个实现了IView的对象传给ViewEngineResult对象的构造函数,然后返回View Engine方法。 MVC框架会调用Render方法。ViewContext上下文包含了来自客户端的Request信息,TextWriter会向客户端输出一些内容。

    学习IViewEngine、Iview和ViewEngineResult之间关系的最好方法就是创建一个View Engine。

    下一篇文章,我们将创建一个自己的View Engine。

  • 相关阅读:
    XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--B.Petrol
    XVI Open Cup named after E.V. Pankratiev. GP of Eurasia
    Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
    训练日志4
    训练日志3
    训练日志2
    多校中期总结
    训练日志
    计算几何学习12 + 组队训练
    计算几何学习11
  • 原文地址:https://www.cnblogs.com/kfx2007/p/2999240.html
Copyright © 2011-2022 走看看