使用 ViewState


Web开发的问题之一是作为HTML格式的Web页在客户端与服务器之间交换数据的时候如何保存控件的状态(设置和用户输入),和其他一些HTTP技术一样,Web Forms 是无状态的,这意味着服务器不会保存上一步客户端请求的任何信息。

ASP.NET Web Forms 处理这个问题的方式是加入一个隐藏状态的控件,名字是 _VIEWSTATE ,用它来记录Web Form上控件的状态。特别需要说明的是,_VIEWSTATE 是被加到用标签<Form .....runat="server">标识的服务器端表单中,仅仅会记录这个表单中的控件的状态。当页面在客户端和服务器端来回传送的时候,控件的状态可以和页面储存在一起,这些状态可以在事务处理结束后的客户端或服务器端被更新。

因为页面的状态储存在页面表单内部,Web页可以访问Web Server farm 中的任一台服务器,而不需要每次都从固定的一台服务器返回。 _VIEWSTATE 的优点可以让开发人员专注于页面设计而不必花精力创建需要保存页面状态的其他方法。

_VIEWSTATE 控件是一个隐藏控件,它包含了一个字符串变量,里面是一些键值对,列出了每一个控件的名字和控件的最新的状态的值。

每一次页面请求时,_VIEWSTATE 控件都会更新并同时发送到服务器端去。服务器端的响应可能会更新 _VIEWSTATE 控件,然后随着响应传回来。这样做的结果,原先页面的设定在2次请求中间被保存下来,保持了连续性。

默认状态下,页面会保存页面中各个控件的状态。但是在页面包含大量控件的情况下,_VIEWSTATE 的大小会影响到性能。为了保持最佳性能,你可能需要在页面级别上停用 VIEWSTATE ,而仅仅在某些特定的控件上使用 VIEWSTAETE。

在页面级别停用VIEWSTATE,可以象下面这样设定
<%@ Page EnableViewState="False"%>

在特定控件上使用VIEWSTATE,同样要设定 EnabelViewState 属性,如下:
<asp:ListBox  id="ListName"  EnableVIewState="true"  runat="server" ></asp:ListBox>

下面介绍重要的一点,有了ViewState,大家大可不必用页面的隐藏空间传递参数了,可以这样用

ViewState["queryPlanTypeID"] = Convert.ToInt32(Request["queryPlanTypeID"]);
ViewState["corpId"] = dr["corpID"].ToString();
 int corpId =int.Parse ( ViewState["corpId"].ToString()) ;

可以是任意的值,使用的时候注意转换就行了

转载于:https://www.cnblogs.com/waitrabbit/archive/2006/06/25/435397.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值