2013-02-03 54 views
2

我只是MVC的新手。什麼時候ReleaseView被調用?

我已經開始由喬恩·加洛韋,菲爾哈克,布拉德·威爾遜,斯科特 - 阿倫

我見過努力地學習如何創建自定義視圖時命名爲`ReleaseView,方法閱讀Professional ASP.NET MVC3。我一直在搜索,並找到了它的定義。

我的問題是:當它的方法(ReleaseView)被調用?其他地方可以使用哪裏?

msdn上ReleaseView的定義是 Releases the specified view by using the specified controller context。那麼,我可以在我的控制器操作中使用這種方法嗎?

請建議我,如果我去錯了

回答

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。

那麼,我可以在我的控制器操作中使用這種方法嗎?

不,控制器操作在視圖引擎開始執行之前已經完成了很多操作。

相關問題