zoukankan      html  css  js  c++  java
  • Asp.net视图状态的作用

    视图状态(view state)是在单个页面中保存信息的第一选择,ASP.NET Web控件也使用试图状态在回发间保存属性值。通过页面内建的 ViewState 属性,你可以把自己的数据放入到视图状态集合中,可以保存的信息类型包括简单数据类型和自定义对象。那么,.Net开发环境下的视图状态与基于COM下的传统视图状态作用有何不同呢?

    基于COM的视图状态

    在传统(基于COM)ASP下,在构建即将输出的HTTP响应时,WEB开发者需要手动为传入的窗体部件重新填充值。例如,如果传入的HTTP请求包括5个带有特定值的文本框,*aspx文件需要提取当前的值(通过Form或者Request对象的QueryString集合)并且手动把它们放回到HTTP响应流里(即拖放)。如果开发者没有设置这个操作,呈现给调用者的就是5个空的文本框!

    基于.Net的视图状态

    在ASP.NET下,我们不在需要手动删除和重新填充位于HTML部件内的值,因为ASP.NET运行时将自动嵌入一个隐藏的表单字段(名为_VIEWSTATE),其范围时浏览器和一个指定的页面之间。分配到这个字段的数据是一个64位编码的字符串,它包括一个描速当前页面上的INIT事件处理程序的作用域内访问web部件的状态最冒险)同时,恰恰在输出相应被提交回发出请求的浏览器之前,_VIEWSTATE数据被用来重新填充窗体部件。显然,ASP.NET最大的优点就是不需要任何用户参与。当然,如果愿意的话,用户总是能够与默认功能交互。需要注意的是,你是在*.ASPX文件中直接硬编码了ListBox内的项。你已经知道,在HTML表单内的<asp:定义将在最后的HTTP响应前自动提交会它们的HTML代码(假如他们有RUNAT=”SERBVER”特性)。简短的一句话概括就是:在.NET下,较大的视图状态数据将自动被压缩,以减少该隐藏表单字段的大小。

     

    视图状态示例

    下面的代码演示了页面如何使用视图状态,它允许用户保存一系列的值,并将其恢复。

    public partial class Chapter06_ViewStateTest : System.Web.UI.Page{protected void btnSave_Click(object sender, EventArgs e){SaveAllText(this.Table1.Controls, true);

    }

    protected void btnRestore_Click(object sender, EventArgs e){RestoreAllText(this.Table1.Controls, true);}

    private void SaveAllText(ControlCollection controls, bool saveNested){foreach (Control control in controls)

    {if (control is TextBox)

    {ViewState[control.ID] = ((TextBox)control)。Text;}

    // bool类型的 saveNested 参数给方法提供了更大的灵活性 www.sytm.net  // 可以控制是否需要递归

    if (control.Controls != null && saveNested){SaveAllText(control.Controls, true);

    }

    }

    }

    private void RestoreAllText(ControlCollection controls, bool saveNested){foreach (Control control in controls)

    {if (control is TextBox)

    {if (ViewState[control.ID] != null)

    {((TextBox)control)。Text = ViewState[control.ID].ToString();}

    }

    if (control.Controls != null && saveNested){RestoreAllText(control.Controls, true);

    }

    }

    }

    }


  • 相关阅读:
    Scala泛型
    Tensorflow激活函数
    20181030-4 每周例行报告
    20181023-3 每周例行报告
    20181016-10 每周例行报告
    20181009-9 每周例行报告
    第三周作业(4)——单元测试
    第三周作业(5)——代码规范
    第三周作业(2)——功能测试
    第三周作业(3)——词频统计--效能分析
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3285564.html
Copyright © 2011-2022 走看看