日期:2014-05-18  浏览次数:20493 次

问一下,微软主页没有一点viewstate是如何做到的
好奇的缘故,查看了微软主页的html源码,发现其中没有一点viewstate的痕迹,但是从html元素的id可以看出,使用了repeater等服务器控件,这是如何做到的?难道他们禁用了所有控件的viewstate,而选择重新绑定?

------解决方案--------------------
你看那种网站网页,就是普通的宣传性网页,而不是什么企业一个用程序。

因此这种简单网页,当你创建一个aspx页面,第一时间就是把默认生成的 <form runat="server">....</form> 给删除掉,然后才开始编写网页。你想,一个简单的网页怎么可能有通篇一个大大的<form>呢?就算回发也根本不需要提交整个页面嘛(而应该是页面上有一些很小的只有几行html代码的<form>...</form>才对)!

编写这类简单网页跟编写企业交互式应用程序完全不同。不要混同。
------解决方案--------------------
我看到里面有<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUBMGRkOEqP2ATp7iqaVfr2mUxhdVHsyno=" />

它可能把整个页面的viewstate禁用了。
------解决方案--------------------
当我们创建一个aspx,它就默认立刻生成了 <form runat="server">...</form>,而且往往是整个页面主要的控件全都包在这个element里边。这就是假设整个页面的目的就是为了复杂的交互式回发界面应用的。

所以假设我们根本就是要开发一个简单的宣传用网页,那么当然我们第一件事情就是删除掉它啦。因为此时确实根本不需要任何基于回发和事件机制而设计的服务器控件。
------解决方案--------------------
它把ViewState禁用掉了,微软自己也知道ViewState附带的信息量沉重影响性能.