簡體   English   中英

ASP.NET MVC 3 Razor輸出緩沖區視圖嗎?

[英]Does ASP.NET MVC 3 Razor output buffer views?

在ASP.NET MVC 3 Razor中,您可以使用以下命令指定頁面標題:

@{
    ViewBag.Title = "Title";
}

現在,假設我們有一個布局頁面:

<title>@ViewBag.Title | Website</title>

當ASP去渲染頁面時,它需要輸出一些布局頁面HTML,然后是視圖HTML,然后是布局頁面HTML的其余部分。

為了輸出布局頁面HTML的前半部分,ASP.NET需要知道視圖中給ViewBag.title賦予的值。 因此,ASP.NET需要在視圖中解析Razor代碼。 但是,ASP.NET還不能輸出視圖的HTML代碼,因為它仍在輸出布局頁面的HTML代碼。 那么ASP.NET是否將視圖的HTML輸出存儲在緩沖區中? 這似乎是一種不好的做法,但我想不出有任何其他方法可以有效地將視圖的標題放入布局頁面輸出中。

當ASP去渲染頁面時,它需要輸出一些布局頁面HTML,然后是視圖HTML,然后是布局頁面HTML的其余部分。

這就是Web表單的呈現方式。 但是由於你描述的問題(以及其他一些)mvc內部渲染。

因此,內部視圖首先呈現為臨時緩沖區。 然后是布局頁面。 當緩沖區隨后寫入響應流並刷新時,此呈現將繼續,直到到達最外層布局頁面。

這不會導致任何問題90%的時間(猜測)但是如果您需要提前清除響應,這將導致頭痛。

僅供參考,可以使用以下方式訪問視圖的緩沖區:

HtmlHelper.ViewContext.Writer

所以回答你的問題,是的 - 它確實緩沖了視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM