首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET网页表单呈现引擎输出控件树?查找有关呈现逻辑的信息

ASP.NET网页表单呈现引擎输出控件树?查找有关呈现逻辑的信息
EN

Stack Overflow用户
提问于 2011-02-12 13:05:16
回答 2查看 694关注 0票数 3

我一直在看Scott Hanselmnn上传授MVC2技巧/技巧的video。他提到了MVC2默认情况下如何使用HTML Forms视图引擎来呈现视图的输出;他提到Web forms视图引擎比MVC2要慢一些,因为它会生成一个控件树,然后将ASP.NET输出到页面(我希望我说的没错)。

我想知道他说的web表单在将HTML输出到页面之前生成代码树是什么意思。有谁了解Web forms的视图引擎和ASP.NET和MVC2的呈现过程的步骤吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-12 13:12:55

在Web Forms中,超文本标记语言是由一个控件层次结构生成的,每个控件都需要被调用来呈现它的超文本标记语言,并且每个控件都构成了页面ViewState。此外,Web Forms (Init、PreRender等)在其生命周期中会触发许多事件,层次结构中的每个控件也会触发类似的事件。

在MVC中,理论上这个过程可能要简单得多,因为你没有深层的控件层次结构,你没有ViewState,你也不需要触发事件。然而,MVC“搭载”了ASP.NET框架,因此在幕后,许多Web Forms的东西仍然存在,尽管它们并不是必需的。

票数 1
EN

Stack Overflow用户

发布于 2011-02-12 13:20:49

HTTP完全是基于这样一个想法:围绕ASP.Net的无状态本质,“伪造”一个有状态的模型。其想法是为WinForms开发人员提供一个熟悉的工作环境,即控件、事件等。

为此,标记被解析为内存中的对象集合,然后您可以像引用WinForms中的控件一样引用这些对象:

代码语言:javascript
复制
TextBox.Text = "I hate viewstate!";

每个控件都被添加到表示要发送回客户端的页的控件集合中。当需要构建响应时,引擎遍历控件的树集合,并要求每个控件Render itself到输出流。结果就是以HTTP响应的形式得到的结果。

在MVC中,这是一个不必要的步骤,因为这些控件从未被引用过。MVC拥抱了web的无状态本质,并将发布的表单变量直接映射到供Controller Actions使用的模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4976453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档