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 に答える