zoukankan      html  css  js  c++  java
  • ViewState 的保存和回复 解释(摘抄asp.net本质论)

    页面的处理过程中,按照从先到后,页面的处理被分成了很多步骤,这些步骤通过事件 被表现了出来。

    在页面的PervRenderComplete事件之后,页面将进行视图状态的保存工作,通过调用SaveViewState 方法, 页面可以获得需要通过视图状态保存的数据对象,然后将这个对象进行

    格式化处理,保存到持久化的介质中。,例如 隐藏域,SaveStateComplete 事件在将页和页上控件的视图状态保存到持久介质之后发生。这是在页被呈现到浏览器之前引发的最后一个

    事件。 默认情况下,这个对象被序列化之后,以base64 的形式生成到HTML页面的隐藏域中。

    当请求重新发送到服务器的时候,服务器会创建一个新的页面对象处理请求,在页面处理的开始阶段,在页面的InitComplete事件之后,页面将从请求中获取通过隐藏域返回的Base64信息,

    通过反序列化之后,得到上次页面对象所保存的数据对象。这个对象通过LoadViewState 方法传回页面对象,实现状态的恢复。

    在第一次对页面进行Get请求的时候,显然没有隐藏域中的数据,也就不会调用LoadViewState方法了。

    页面的IsPostBack 属性,就是通过检查请求中是否包含了 __ViewState的请求参数来判断 当前请求是否为回发操作的。

    在Control控件中定义了保存和恢复视图状态的方法,这些方法一般为protected,一般用于自定义控件开发中使用。在页面中同样使用这些方法完成视图状态的管理。

    protected virtual Object SaveViewState()

    protected virtual void LoadViewState(Object savedStated)

    作为Control的一个子类,页面对象同样通过这两个方法处理整个页面的视图状态管理。

    在页面对象中提供了视图状态对象进行持久化处理的两个方法,一个用于将对象保存,一个用于获取

    protected override void SavePageStateToPersistenceMedium(Object viewState)

    protected override Object LoadPageStateFromPersistenceMedium()

  • 相关阅读:
    Git常用命令
    Shell脚本学习
    Shell脚本学习
    Shell脚本学习
    Git ignore文件的用法
    RSA非对称加密算法
    C++ 标准库中的堆(heap)
    EM(Entity FrameWork)- code first , using in Visual stdio 2017
    C# 图片文字识别
    C# 调 C++ DLL 托管代码中释放非托管函数分配的内存
  • 原文地址:https://www.cnblogs.com/honkcal/p/2381830.html
Copyright © 2011-2022 走看看