ViewState与Session

ViewState其实和Session.Application是一样的.

只是作用域不一样.

session是会话级的.application是应用程序级的.而viewstate则是页面级的.

也就是说出了这个页面.该viewstate不能再被访问.可以保存任何对象.

如:

page_load中:if(!IsPostBack)ViewState["test"]=0;

在页面的某个button事件中:int test=Convert.ToInt32(ViewState["test"].ToString());

这时可以直接从viewstate中拿出值来.
ViewState 指的是当前页面的视图状态(不同于控件的视图状态),
ViewState 可以将任意支持序列化的对象保存到页面中,
它与 Session 的重要区别有两个:
第一、ViewState 保存的对象不能跨页使用,仅限当前页面使用。Session 对象则可以所有页面共享使用。
Session["Count"] = 13;
变量 Count 可供所有页面使用(只要存在),Count 变量的生命周期由初始化到会话结束,

ViewState["Count"] = 13;
变量 Count 仅能在当前页面使用,生命周期是请求当前页面开始,到当前页面完成生成HTML最终呈现到客户端浏览器的文件结束。
对象被序列化后“依附”在页面上,
呈现为页面时使用 <input type="hidden" value="信息被记录在此处"> 标记记录相关信息。
每一次回调(CallBack),ASP.NET将从当前页面中提取“依附”在页面上“寄存”的信息以还原该视图状态的对象。
例如:
Page_Load()
{
    if (! IsPostBack)
    {
         ViewState["Count"] = 0; //初始化 Count 变量
    }
}

经过初始化后,可在当前页面任意地方使用该变量(即使是回调时执行的代码)。


第二、Session 的变量存储在服务器上,ViewState 存储在当前页面中。

session 占用服务器资源 viewstate则不占用。

session不加重html负载,viewstate则相反

session 对整个 application 有效 ,而 viewstate相当于某个页面的 session


定义 viewstate

// 保存viewstate
ViewState["SortOrder"] = "DESC";

// 读取viewstate
string sortOrder = (string)ViewState["SortOrder"];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值