2

我只是 MVC 的新手。

我已经开始阅读Professional ASP.NET MVC3Jon Galloway、Phil Haack、Brad Wilson、Scott Allen 的书了

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

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

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

如果我错了,请建议我

4

1 回答 1

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。

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

不,控制器动作在视图引擎开始执行之前就已经完成执行。

于 2013-02-03T17:12:34.210 回答