我一直在看Scott Hanselmnn上传授MVC2技巧/技巧的video。他提到了MVC2默认情况下如何使用HTML Forms视图引擎来呈现视图的输出;他提到Web forms视图引擎比MVC2要慢一些,因为它会生成一个控件树,然后将ASP.NET输出到页面(我希望我说的没错)。
我想知道他说的web表单在将HTML输出到页面之前生成代码树是什么意思。有谁了解Web forms的视图引擎和ASP.NET和MVC2的呈现过程的步骤吗?
发布于 2011-02-12 13:12:55
在Web Forms中,超文本标记语言是由一个控件层次结构生成的,每个控件都需要被调用来呈现它的超文本标记语言,并且每个控件都构成了页面ViewState。此外,Web Forms (Init、PreRender等)在其生命周期中会触发许多事件,层次结构中的每个控件也会触发类似的事件。
在MVC中,理论上这个过程可能要简单得多,因为你没有深层的控件层次结构,你没有ViewState,你也不需要触发事件。然而,MVC“搭载”了ASP.NET框架,因此在幕后,许多Web Forms的东西仍然存在,尽管它们并不是必需的。
发布于 2011-02-12 13:20:49
HTTP完全是基于这样一个想法:围绕ASP.Net的无状态本质,“伪造”一个有状态的模型。其想法是为WinForms开发人员提供一个熟悉的工作环境,即控件、事件等。
为此,标记被解析为内存中的对象集合,然后您可以像引用WinForms中的控件一样引用这些对象:
TextBox.Text = "I hate viewstate!";每个控件都被添加到表示要发送回客户端的页的控件集合中。当需要构建响应时,引擎遍历控件的树集合,并要求每个控件Render itself到输出流。结果就是以HTTP响应的形式得到的结果。
在MVC中,这是一个不必要的步骤,因为这些控件从未被引用过。MVC拥抱了web的无状态本质,并将发布的表单变量直接映射到供Controller Actions使用的模型。
https://stackoverflow.com/questions/4976453
复制相似问题