有时候,我们不想在回送时保持列表控件的值不变。除了对带宽的考虑外,还有其他一些原因促使我们在每次加载页时重新创建数据集,或重新绑定列表控件。最简单的情况是当页并没有实际包括<form>的时候,他们不是交互式页,因此也不必将值传送回服务器——我们只要加载页并进行浏览就可以了。在这种情况下没有VIEWSTATE,也没有用户交互。
然而,如果页包含<form>部分,那么列表控件的值将自动包括在VIEWSTATE中。当然,如果列表控件包含交互元素,如必须被传送回服务器的按钮或编辑控件,那么该控件必须位于HTML<form>上。这一点适用于排序和筛选,其栏标题自动被作为LinkButton控件显示。无论如何对行进行排序和筛选,我们都必须每次将数据网格重新绑定到DataView对象。我们实际上是在每次回送时重新创建整个DataSet和DataView,因此不必在VIEWSTATE中保存值。由于这一原因,我们在控件定义中将DataGrid对象的EnableViewState属性设置为False,以便该控件的内容不包括在VIEWSTATE中。
我们可以使用“页跟踪”来查看某页的VIEWSTATE中包括多少数据。在Page提示符中添加Trace=”True”,然后在本地运行该页(即运行在web服务器本身上的浏览器中)。这样就做到了禁止列表控件值在回送时保持了不变的状况,当然,我们还要在浏览器中了解到每次发送给客户端的准确数据量。
有时最直白的方法也是最有效的。当你设计注册框架时,不妨把自己当成记者。任何好记者都知道,一篇新闻报道必须回答5W1H:何人 (Who)、何事(What)、何地(Where)、何时(When)、为何(Why) 以及如何(How),你得假设你的读者从未听说过你要写的主题。
与记者一样,Web设计师设计注册框架的核心任务就是回答这些基本调查问题。
这是人们对几乎任何事情都会提出的5个基本问题。
*这是提供给谁的?谁会来使用它?(这个问题的答案往往不会是“光是我”。)