首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.Net ViewState的实现

ASP.NET 辅助进程中,所以可以实现从应用程序故障的恢复。”      ...,是反序列化,我们这里使用了反序列化的方法来把ViewState直接反序列化成一个对象,然后把这个对象的类型打出来,这个对象就是:Triplet类型,实际上Asp.Net中页面保存的ViewState就是这个类型...也就是整个页面的控件树的ViewState是怎么保存和读取的呢?   ...保存递归子控件SaveViewStateRecursive方法的返回值     [7] 返回Triplet    这样就保存了整个控件树的ViewState和控件树的结构    Load的方式与Save...差不多,只是Load的时候会从savedState中获取子控件的索引来依次递归子控件的LoadRecursive()方法,这样才能保证正确的把保存的数据传给子控件。

1K30

viewstate解密

,保存在Application中的数据是全局有效的;在Asp.Net中,有一个应用程序池,其中保存了数个(或数十个)应用程序实例,每一次请求都会从池中取一个实例来处理请求,在请求完毕之前,这个实例不会接受其他请求...ASP.NET 辅助进程中,所以可以实现从应用程序故障的恢复。”...,是反序列化,我们这里使用了反序列化的方法来把ViewState直接反序列化成一个对象,然后把这个对象的类型打出来,这个对象就是:Triplet类型,实际上Asp.Net中页面保存的ViewState就是这个类型...也就是整个页面的控件树的ViewState是怎么保存和读取的呢?...的时候会从savedState中获取子控件的索引来依次递归子控件的LoadRecursive()方法,这样才能保证正确的把保存的数据传给子控件。

1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Asp.net页面生命周期

    1.页面实例化之前:Asp.net工作进程会确定是否需要分析和编译页面从而开始生命周期,或是否从缓存中读取已生成好的html页面而不开始生命周期; 2.页面实例化:这个阶段会检查该请求是否为回传,并且设置...注意此时只是初始化了服务器控件和页面的框架和声明时设置的属性,而viewstate等还没有恢复,也不存在回传值(但可以通过Request.Form来获取有效控件的回传值,只是还没复制到控件实例中。...因为Request对象不是在HttpHandler中实例化的,具体请参考:asp.net管道模型(管线模型)之一发不可收拾)。 4.页面初始化(OnInit):读取页面和控件的值,生成动态服务器控件。...其中ViewState又有页面的ViewState和控件的ViewState,而这里加载的ViewState中包含了这两种。...如果设置了ViewState分块保存的话,会将ViewState分块保存在多个隐藏控件中。如下 如果隐藏域中的数据量过大,某些代理和防火墙将阻止对包含这些数据的页的访问。

    2.4K80

    常见 Datagrid 错误

    Marcie Robillard DatagridGirl.com Datagrid 控件是 Microsoft® ASP.NET 中功能最强、用途最广的 Web 控件之一,这一点已经得到了 ASP.NET...您可以看到许多苦闷的使用者在 ASP.NET 新闻组和论坛就这些错误提出问题。遵循本文概述的相当简单的步骤,可以帮助您避免这些错误,并节约大量的开发时间。...ASP.NET 在每个控件的 ID 前面加上该控件层次结构中每个命名容器的 ID,这样 Textbox 将具有唯一的 ID,与页面中所有其他控件的 ID 都不相同。...运行时不必要地在 Datagrid 中动态创建 Datagrid 控件或列 在某些业务和技术方案中,在运行时创建 ASP.NET 控件是必要的,也是完全合适的。...持续使用大型 ViewState Datagrid 控件会在页面中添加大量的 ViewState,这一点令人讨厌,因为这会导致呈现给用户的页面的总体大小急剧增加。

    2.4K20

    ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    然后,再对曾经很流行的ASP.Net AJAX方案中的利器—UpdatePanel这个神奇的区域一探究竟。...而伟大的Microsoft还在ASP.Net中帮我们封装了ViewState,以至于我们在WebForm中进行PostBack操作时,都感觉不到服务器是无状态的。...事实上,除了我们手动在服务器端向ViewState属性中添加的K/V对数据,我们在aspx.cs代码中为某些服务器控件设置的值(例如:为Repeater设置DataSource中存入的数据集、为Label...默认情况下 ViewState 将被启用,并且是由每个控件(而非页面开发人员)来决定存储在 ViewState 中的内容。...②控件级禁用ViewState:在某些场景中,我们只希望禁用某个控件(例如Repater)的ViewState,其他控件仍然通过ViewState保持状态。

    1.8K30

    ASP.NET ViewState之详解

    今天我们来了解一下在ASP.NET中ViewState的作用。 ViewState=视图状态; ViewState的通用解释就是:是 ASP.NET 页中的存储库,可以存储必须在回发过程中保留的值。...所谓回发:就是由服务器控件导致的页面刷新。 ASP.NET 页框架使用视图状态在往返过程之间保存页和控件值。...在呈现页的 HTML 时,必须在回发过程中保留的页和值的当前状态将被序列化为 Base64 编码字符串。然后,它们将被放入页中的一个或多个隐藏字段。 大家在开发程序的时候,查看网页源代码。...每次从服务器请求页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中会丢失该页及其控件中的所有信息。...总结:ViewState由于数据存放在客户端,肯定会减少服务器的压力,但是,如果ViewState的数据量过大,肯定是会影响页面的加载速度和性能的。

    1.5K30

    c#以POST方式模拟提交表单

    等值的页面";          //如果是asp.net页面,最好是先取到VIEWSTATE和EVENTVALIDATION值一并提交                  ///////////////...详见:http://www.cnblogs.com/anjou/archive/2006/12/25/602943.html (asp.net中webClient填充和提交表单的方法!)                 ...WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton 这两种按钮最终到客户端的表现形式为: 中的 Type为button的HtmlInputButton 和其它所有的控件事件,比如LinkButton点击,TextBox的Change事件等等: 这些事件在客户端产生后会经过一个统一的机制发送到服务端...每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码: 比如,HtmlControls 中的 Type为button的HtmlInputButton的点击事件 <!

    2.2K90

    ASP.NET页面周期学习笔记之一

    1.基本概念:所谓的页面生命周期,指的是一个ASP.NET页面类对象从初始化到销毁经过的步凑过程; 2.大致步凑: (1)初始化:PreInit,Init,InitComplete (2)加载数据和页面...()方法执行步凑 1.根据是否包含_VIEWSTATE设置IsPostBack属性是否为True 2.LoadAllState(),将隐藏域_VIEWSTATE的值装入页面对象的ViewState属性中...3.第一次调用ProcessPostData(),将属性ViewState里包含的服务器控件的属性值重新还原到对应的服务器控件中 4.Load 我们最常使用的Page_Load方法 5.第二次调用ProcessPostData...HTML代码 9.SaveState 将控件的最后属性及用户定义的最后值放到ViewState中[生成隐藏域] 10.Render 生成整个页面的HTML代码 三、HttpApplication 事件处理过程...HttpApplication 类的实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的。

    1.1K30

    ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    每一个ASP.NET Page页都有2个部分:一个部分是在浏览器中进行显示的部分,它包含了HTML标签、viewstate形式的隐藏域 以及 在HTML input中的数据。...当这个页面被提交到服务器时,这些HTML标签会被创建到ASP.NET控件,并且viewstate还会和表单数据绑定在一起。...另一个部分是在xxx.cs文件中的进行业务逻辑操作的部分,一旦你在后置代码中得到所有的服务器控件,你可以执行和写入你自己的逻辑并呈现给客户浏览器。   ...在这部分中我们没有获得viewstate、提交的数据值及已经初始化的控件。...8 Save ViewState Yes Yes Yes 一旦对服务器控件的所有修改完成,将会保存控件数据到View State中。

    1.4K20

    Asp.NET中常用的一些优化性能的方法

    2:不使用不必要的Server Control ASP.net中,大量的服务器端控件方便了程序开发,但也可能带来性能的损失,因为用户每操作一次服务器端控件,就产生一次与服务器端的往返过程。...3:不使用不必要的ViewState 默认情况下,ASP.Net对所有的Server Control都启用了ViewState(视图状态)。...有两种方式禁止ViewState:针对整个页面或者单个控件禁用ViewState。...n         片断缓冲 在ASP.net中,除了在页面范围内使用缓冲,也还可以针对User Control使用Output Cache参数实现对用户控件的缓冲。...同样的,一个页面中相同类型的控件也可以有多个不同的缓冲。可以根据参数来实现不同的缓冲。 例如:对于控件可以根据Control 的C属性的不同实现不同的缓冲。

    73530

    网页优化系列三:使用压缩后置viewstate

    Asp.net中的服务器控件都启用了viewstate,虽然方便了开发人员,但页面大小及性能上确实有所影响,对于无需viewstate的控件及页面可以直接把控件或页面的viewstate禁用掉,但对于必须的...state就是页面所有的viewstate集合对象,默认时该对象是经过序列化后保存到__ViewState的隐藏控件中的。...4.压缩完后恢复成以68位的数为基的编码字符串保存到__MyViewState的隐藏控件中,注意不能用回默认的__ViewState保存,否则会出错。...这样ViewState的压缩就KO了。当然Asp.net还可以将ViewState保存到Session里面,设置一下就好了,非常方便,也免得自己来处理多页面出现的ViewState覆盖问题。   ...viewstate部分,并移动到html代码的最后,然后直接输出到响应流中,至于重写方 法中的参数,就当作路人甲乙丙吧。

    79250

    网页优化系列三:使用压缩后置viewstate

    Asp.net中的服务器控件都启用了viewstate,虽然方便了开发人员,但页面大小及性能上确实有所影响,对于无需viewstate的控件及页面可以直接把控件或页面的viewstate禁用掉,但对于必须的...state就是页面所有的viewstate集合对象,默认时该对象是经过序列化后保存到__ViewState的隐藏控件中的。...4.压缩完后恢复成以68位的数为基的编码字符串保存到__MyViewState的隐藏控件中,注意不能用回默认的__ViewState保存,否则会出错。...这样ViewState的压缩就KO了。当然Asp.net还可以将ViewState保存到Session里面,设置一下就好了,非常方便,也免得自己来处理多页面出现的ViewState覆盖问题。   ...viewstate部分,并移动到html代码的最后,然后直接输出到响应流中,至于重写方 法中的参数,就当作路人甲乙丙吧。

    77060

    ASP.NET保持用户状态的九种选择

    ASP.NET中添加了四个新的对象:Cache、Context、ViewState和Web.Config文件。...但是在ASP.NET中这种技术不太适合了,因为只要你使用postback模型(也就是页面发回给自己),Web控件和ViewState自动处理了这些操作。...ViewState是ASP.NET中的一个新容器,也许你已经使用它了,但是你可能还是不了解它。这是因为所有的内建Web控件都使用ViewState在页面回发(postback)间保持自己的值。...典型的Web窗体不需要直接维护ViewState。但是如果你建立自定义Web控件,就需要了解它是怎样工作的,并为你的控件实现它,这样该控件的工作方式才能与随ASP.NET发布的Web控件同样地工作。...这在控件的属性层可以简单实现。代码段6演示了怎样保存一个简单的自定义控件的PersonName属性到ViewState中,并在该控件的Render方法中使用它。

    1.9K20

    【译】ASP.NET应用程序和页面生命周期

    Page Init 此事件发生在ASP.NET页面且可以用来: 1、动态地创建控件,如果你一定要在运行时创建控件; 2、任何初始化设置 3、母版页及其设置 在这部分中我们没有获得viewstate、postedvalues...当这个页面被提交到服务器时,这些HTML标签会被创建到ASP.NET控件,并且viewstate还会和表单数据绑定在一起。...一旦你在后置代码中得到所有的服务器控件,你可以执行和写入你自己的逻辑并呈现给客户浏览器。 ?...在这部分中我们没有获得viewstate、提交的数据值及已经初始化的控件。...8 Save ViewState Yes Yes Yes 一旦对服务器控件的所有修改完成,将会保存控件数据到View State中。

    1.1K30

    ASP.NET 2.0页面框架的几处变化

    新增的页面事件: 在ASP.NET 2.0中,一个ASP.NET页面的生命周期主要为(红色字体表示ASP.NET 2.0新增加的阶段页面事件):客户端请求页面—》预初始化(OnPreInit)—》初始化...ControlState是ASP.NET2.0控件新增的一个属性,类似ViewState作用,但它们区别在于ControlState用于保存更加重要的控件状态信息,以保证在禁用ViewState的情况下还可以对控件状态进行读写操作...通过对Header属性的跟踪,可以发现,Header属性保存着一个实现IPageHeader接口的对象(该对象有LinkedStyleSheets、Metadata、StyleSheet和Title四个属性...: 在ASP.NET1.0中,我就为了设置表单中的默认按钮而一筹莫展。...,在ASP.NET 2.0中可以这样实现: this.Textbox1.Focus();  或 this.SetFocus(this.Textbox1); 即可为TextBox1控件设置焦点。

    1.4K30

    .net页面生命周期

    还有就是可以通过OnInit()来重载初试化事件 (2) LoadViewState---导入Viewstate数据 在初试化事件后,在loadvireState事件中所有控件将获得他们的第一个属性ViewState...(4) Page_Load();---导入对象 这个过程就比较熟悉了,也是在页面的每次载入时一定会执行,但是注意和PageInit()之间的区别,所有的对象第一次被布置在DOM页面(在Asp.net中称控件树...经常会用到的Page.IsPostBack()指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问. (5) Handle control events;---具体的控件事件 这个过程执行的是相应具体控件事件...(6) Page_PreRender();---预先呈递对象 预先呈递对象可以改变对象并将改变保存的最后时刻.可以对控件的属性、控件树的结构等做出最后的修改,同时还不用考虑Asp.net对其作出任何改变...(7) Page_Render();---呈递对象呈递页面 所有对页面控件的修改完成后viewstate就被保存了。运用Html创建给浏览器输出的页面的时候Render事件就发生了。

    64670
    领券