何时调用方法(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。
那么,我可以在我的控制器操作中使用这种方法吗?
不,控制器动作在视图引擎开始执行之前就已经完成执行。