什么时候调用ReleaseView?

时间:2013-02-03 17:03:56

标签: asp.net-mvc-3 viewengine

我只是MVC的新手。

我开始阅读Jon Galloway,Phil Haack,Brad Wilson,Scott Allen的Professional ASP.NET MVC3

在尝试学习如何创建自定义视图时,我看到了一个名为`ReleaseView的方法。我已经用Google搜索并找到了它的定义。

我的问题是:什么时候调用方法(ReleaseView)?其他地方可以在哪里使用?

msdn上的ReleaseView定义是 Releases the specified view by using the specified controller context。那么,我可以在我的控制器动作中使用这种方法吗?

如果我出错,请建议我

1 个答案:

答案 0 :(得分:3)

  

什么时候调用方法(ReleaseView)?

ViewResultBase.ExecuteResult方法调用:

public override void ExecuteResult(ControllerContext context)
{
    if (context == null)
    {
        throw new ArgumentNullException("context");
    }
    if (string.IsNullOrEmpty(this.ViewName))
    {
        this.ViewName = context.RouteData.GetRequiredString("action");
    }
    ViewEngineResult result = null;
    if (this.View == null)
    {
        result = this.FindView(context);
        this.View = result.View;
    }
    TextWriter output = context.HttpContext.Response.Output;
    ViewContext viewContext = new ViewContext(context, this.View, this.ViewData, this.TempData, output);
    this.View.Render(viewContext, output);
    if (result != null)
    {
        result.ViewEngine.ReleaseView(context, this.View);
    }
}

注意一旦视图呈现给输出流,就会调用ReleaseView方法。因此,基本上每次控制器操作返回View或PartialView时,当此ActionResult完成执行时,它将调用底层视图引擎上的ReleaseView方法。

  

其他地方可以在哪里使用?

例如,如果您正在编写自定义ActionResults。

  

那么,我可以在我的控制器动作中使用这个方法吗?

不,在视图引擎开始执行之前,控制器操作已经完成了很多次。