• 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

  • 相关阅读:
    VSCode 常用插件
    手机能上网,电脑不能上网
    git**b卡慢进不去?告诉你一个小tip
    VS 调试时关闭浏览器会中断调试
    Edge浏览器快捷键alt+tab和系统切换冲突如何关闭?
    aws supported language
    Windows/Linux 生成iOS证书及p12文件
    关于MySQLbinlog 追查操作数据库IP的过程
    JavaScript将文件转为base64格式
    iOS的WebView展示H5不能全屏问题
  • 原文地址:https://www.cnblogs.com/automation/p/2873090.html
Copyright © 2020-2023  润新知