zoukankan      html  css  js  c++  java
  • ViewState

    ViewState["key"] = "value";在后台输入这段代码,在前台浏览会生成
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjkPFgIeA2tleQUFdmFsdWVkZOJehgmZf58s85cI+39pgF1pPFcyVM1IiB6lpeVMlIHT" />
    
    ViewState以键值对形式存在隐藏域当中,服务器将ViewState里保存的值经过Base64编码后,自动添加到页面的隐藏域中。
    我们把value用ViewStateDecoder打开会看到是保存在一个ArrayList中
    image
    我们输入两个ViewState
    ViewState["key"] = "value";
    ViewState["key2"] = "value2";再看结果
    image
    这样我们可以通过Response.Write(ViewState["key"].ToString());//输出结果为value
    注意:ViewState不能存储所有的数据类型,仅支持可序列化对象。

    非单值服务器控件的状态也自动保存在ViewState中

    例如:下拉框。(文本框是单值控件,所以不会保存在ViewState中)服务器在接收到用户请求一个页面后,会自动在请求报文中找看是否包含__VIEWSTATE的隐藏域,如果有,则将中间的值解码后添加到页面的ViewState属性中。

    服务器在输出的时候,也会自动的将ViewState中的值添加到表单里名叫__VIEWSTATE的隐藏域中,VIEWSTATE适用于同一个页面在不关闭的情况下多次与服务器交互

    使用ViewState的前提:页面上必须有一个服务器端窗体标记(<form runat=“server”>)

    禁用ViewState

    禁用ViewState后还是会生成ViewState,但是生成的没 那么多,因为不会保存服务端控件的值,ViewState主要保存服务器端控件的属性值,用户定义的ViewState键值对,禁用控件的事件仍旧可以用.

    禁用ViewState的方法,禁用单个控件的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState。

    禁用整个页面的,在aspx的Page指令区加上EnableViewState="false" 。内网系统、互联网的后台可以尽情的用ViewState。

    当某些控件的某些属性不属于浏览器表单的提交范围时,fw将会把这些属性添加到ViewState中保存。WebForm的IsPostBack依赖于__ViewState

  • 相关阅读:
    MySQL之数据库优化
    cookie和session
    php自动加载
    php函数之strtr和str_replace的区别
    php函数之substr()
    阶段总结(一)
    json和xml
    sqlserver交换数据行中的指定列
    3 宏、条件编译
    5 常量与变量
  • 原文地址:https://www.cnblogs.com/automation/p/2873090.html
Copyright © 2011-2022 走看看