Asp.net mvc 3 ReleaseView何时获得';这叫什么?

Asp.net mvc 3 ReleaseView何时获得';这叫什么?,asp.net-mvc-3,viewengine,Asp.net Mvc 3,Viewengine,我只是MVC的新手 我已经开始阅读Jon Galloway、Phil Haack、Brad Wilson和Scott Allen的《专业ASP.NET MVC3》 在学习如何创建自定义视图时,我见过一个名为“ReleaseView”的方法。我在谷歌上搜索了一下,找到了它的定义 我的问题是:什么时候调用方法(ReleaseView)?还有其他可以使用它的地方吗 msdn上ReleaseView的定义是 使用指定的控制器上下文释放指定的视图。那么,我可以在控制器操作中使用此方法吗 如果我做错了,请告

我只是MVC的新手

我已经开始阅读Jon Galloway、Phil Haack、Brad Wilson和Scott Allen的《专业ASP.NET MVC3》

在学习如何创建自定义视图时,我见过一个名为“ReleaseView”的方法。我在谷歌上搜索了一下,找到了它的定义

我的问题是:什么时候调用方法(ReleaseView)?还有其他可以使用它的地方吗

msdn上ReleaseView的定义是

使用指定的控制器上下文释放指定的视图
。那么,我可以在控制器操作中使用此方法吗

如果我做错了,请告诉我

何时调用该方法(ReleaseView)

它由
ViewResultBase.ExecuteSult
方法调用:

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方法。因此,基本上每次控制器操作返回视图或PartialView时,当这个ActionResult完成执行时,它都会调用底层视图引擎上的ReleaseView方法

还有其他可以使用它的地方吗

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

那么,我可以在控制器操作中使用此方法吗

否,在视图引擎开始执行之前,控制器操作已完成执行