Viewstate 作为一个 ASP.Net 提升开发的技术特性,其使用效果已经深入人心。当然,Viewstate 也需要我们在开发过程中进行上手操作,才能真正派上用场。
在今天的这篇文章里,我们将讲解一些 Viewstate 的技巧,接下来阅读本文,你将能够学习到这些技巧,并将它们应用到你需要的项目中。
一. 禁用 Viewstate
在开发 ASP.NET 网站时,Viewstate 经常被开发者所反感。禁止 Viewstate 也是一个比较普遍的做法。Viewstate 虽然有一些优势,但你也需要了解它的缺点:
1. 当你在子控件上使用 Viewstate,而在每个 Postback 请求发出时,所有的控件状态都必须序列化和反序列化。这样可能会导致性能下降。
2. Viewstate 难以维护,因为它存在于页面文本中,所以要故障排除时会变得困难。
因此,禁用 Viewstate 可以在你的应用程序中获得相当的性能提升。只需在 .aspx 文件级别上设置 EnableViewState =“False”。这一设置将禁用该页面的 Viewstate,您应该注意该控件中包含的全部控件都不会再维护状态。
二. 使用带有 ViewStateMode=“Disabled” 的标签
有时,您可能只想禁用特定控件的 Viewstate,而不是整个页面的 Viewstate。这可以使用 ViewStateMode =“Disabled” 属性实现,如下所示:
使用此属性将 ViewState 禁用的其他控件不会受到影响。
三. ViewState 捆绑
在多个页面上使用相同的 Viewstate 值是比较常见的需求。但是,一旦您需要使用不同的 Viewstate 值,则会变得非常困难。当这种情况发生时,您可以使用 ViewState 捆绑。
ViewState 绑定允许将整个页面的 Viewstate 树结构都捆绑在一起,然后传递到另一个页面进行使用。
在原始页面中,您可以通过以下方式捆绑 Viewstate:
ViewState["MyViewState"] = this.Page.SaveViewState();
一旦 Viewstate 已捆绑,您可以轻松地将其传递到其他页面,并将其还原:
this.Page.LoadViewState((object)ViewState["MyViewState"]);
四. 禁用 Viewstate MAC 校验
Viewstate MAC 校验是一种确保在数据传输过程中不被篡改的机制。尽管这种机制很有用,但对于某些应用程序而言,可能会构成一种不必要的开销。
如果你的应用程序规模很小,或者你的 Viewstate 可以在安全的信道上传输,那么可以考虑关闭校验。这可以通过在页面级别上设置 EnableViewStateMac =“false” 来实现。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableViewStateMac="false"%>
五. 在视图转换中保留 Viewstate
ASP.NET 应用程序通常具有多个页面,从一个页面导航到另一个页面所需的 Viewstate 状态是一项重要的问题。而且,有时我们在设计应用程序时会遇到这样的问题 - 移动端和桌面端页面需要以不同的方式进行移动。使用视图转换可以轻松地解决这个问题。
要在视图之间保留 Viewstate,可以使用以下代码:
protected override object SaveViewState()
{
object[] state = new object[2];
state[0] = base.SaveViewState();
state[1] = _itemList;
return state;
}
ASP.NET 会自动将这些值保留在应用程序的会话中,而无需你自己去编写代码。
在视图转换中保留 Viewstate,实现起来非常容易,你可以很容易地创建一个视图并传递到另一个视图,而不必编写复杂的代码。
Viewstate 的使用不仅仅局限于这些,还有很多其他的技巧和用法。总之,Viewstate 的确是 ASP.NET 中极其重要的技术之一,它可以帮助我们在提高效率的同时,提升网站的性能和个性化成分。