页面和服务器控件处理


下列准则提供了有效使用 ASP.NET 页面和控件的建议。

  • 避免到服务器的不必要的往返行程 在某些情况下不必使用 ASP.NET 服务器控件和执行回发事件处理。例如,在 ASP.NET 网页中验证用户输入经常可在数据提交到服务器之前在客户端进行。通常,如果不需要将信息传递到服务器以进行验证或将其写入数据存储区,请避免使用导致到服务器的往返行程的代码,这样可以提高页的性能并改善用户体验。您也可以不执行整个往返行程,而是使用客户端回调从服务器中读取数据。如果您开发自定义服务器控件,请考虑让它们为支持 ECMAScript (JavaScript) 的浏览器呈现客户端代码。通过以这种方式使用服务器控件,您可以显著地减少信息被发送到 Web 服务器的次数。
  • 使用 Page 对象的 IsPostBack 属性来避免对往返行程执行不必要的处理 如果您编写处理服务器控件回发处理的代码,有时可能需要代码仅在首次请求页时执行,而不是每次回发时都执行。根据该页是否是响应服务器控件事件生成的,使用 属性有条件地执行代码。
  • 只在必要时保存服务器控件视图状态 自动视图状态管理使服务器控件可以在往返行程中重新填充它们的属性值,而您不需要编写任何代码。但是,因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器,所以该功能影响性能。了解在哪些情况下视图状态会有所帮助,在哪些情况下它影响页的性能,这样是有帮助的。例如,如果您将服务器控件绑定到每个往返行程上的数据,因为控件的值会在数据绑定期间用新值替换,所以保存的视图状态没有用处。在这种情况下,禁用视图状态可以节省处理时间并减少页的大小。
    默认情况下,为所有服务器控件启用视图状态。若要禁用它,请将控件的 属性设置为 false,如下面的 服务器控件示例所示:

 


<asp:datagrid EnableViewState="false" datasource="..." 
runat="server"/>



  • 您还可以使用 指令禁用整个页的视图状态。当您不从页回发到服务器时,这将十分有用:

 


<%@ Page EnableViewState="false" %>



注意:


指令中还支持 属性以指定是否为用户控件启用视图状态。



  • 若要分析服务器控件在页中使用的视图状态的大小,请通过将 trace="true" 属性包含在 @ Page 指令中启用对该页的跟踪。然后在跟踪输出中,查看“控件层次结构”表的“Viewstate”列。有关跟踪和如何启用它的信息,请参见 。
  • 除非有特殊的原因要关闭缓冲,否则使其保持打开状态 禁用 ASP.NET 网页的缓冲会导致大量的性能开销。有关更多信息,请参见 属性。
  • 使用 对象或跨页发送的方法在同一个应用程序中的不同 ASP.NET 页之间重定向