gpt4 book ai didi

asp.net - ASP.NET MVC 3 Razor 是否输出缓冲区 View ?

转载 作者:行者123 更新时间:2023-12-01 10:05:53 25 4
gpt4 key购买 nike

在 ASP.NET MVC 3 Razor 中,您可以指定页面标题:

@{
ViewBag.Title = "Title";
}

现在,假设我们有一个布局页面:

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

当 ASP 去呈现页面时,它需要输出一些布局页面 HTML,然后是 View HTML,然后是布局页面 HTML 的其余部分。

为了输出布局页面的前半部分 HTML,ASP.NET 需要知道 View 中 ViewBag.title 的值。因此,ASP.NET 需要解析 View 中的 Razor 代码。但是,ASP.NET 还不能输出 View 的 HTML 代码,因为它仍在输出布局页面的 HTML 代码。那么 ASP.NET 是否将 View 的 HTML 输出存储在缓冲区中?这似乎是一种不好的做法,但我想不出任何其他方法可以有效地将 View 的标题放入布局页面输出中。

最佳答案

When ASP goes to render a page, it will need to output some of the layout page HTML, then the view HTML, then the rest of the layout page HTML.

Web 表单就是这样呈现的。但是,由于您描述的问题(以及其他一些问题),mvc 呈现由内而外。

所以内部 View 首先被渲染到一个临时缓冲区。然后是布局页面。这种渲染一直持续到到达最外层的布局页面,然后缓冲区被写入响应流并刷新。

这在 90% 的情况下(估计)不会引起任何问题,但是如果您需要提前刷新响应,这会引起麻烦。

仅供引用,可以通过以下方式访问 View 缓冲区:

HtmlHelper.ViewContext.Writer

所以回答你的问题,是的 - 它确实缓冲 View 。

关于asp.net - ASP.NET MVC 3 Razor 是否输出缓冲区 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10815064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com