ViewState 与 Session 比较

ViewState
    通过Web表单中维持对象的ViewState(视图状态),省去大量的编码工作
    ViewState是ASP.NET中用来保存web控件回传时状态值的一种机制
    在Web窗体(Form)中设置为runat="Server",就会被附加一个隐藏属性 _VIEWSTATE,用于存放所有控件的状态值
    可以记录一个页面的不同PostBack的一些数值

    在 class ASP中的表单被提交时,所有表单数据都会被清空,站点不会维持 ViewState
    而 ASP .NET中的表单被提交时,表单会随着所有表单值一同重新出现,.NET维持了 ViewState
        ViewState 会在页面被提交到服务器时 指示器状态,
        通过在每张页面中的<form runat="server">控件中放置隐藏域,就可以定义其页面状态了
        源代码类似如下:
            
    维持 ViewState 是ASP.NET Web表单的默认设置
    如果不希望维持 ViewState,
        在 .aspx页面顶部添加  <%@Page EnableViewState = "false" %>
        或在控件添加属性  EnableViewState = "false" 

机制:
    当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端
    当客户端页面回传时,ASP.NET分析回传的窗体属性,并赋值给控件对应的值
    整个过程由 ASP.NET负责
注意:ViewState 大小写敏感
          ViewState不能跨页面
          TextBox的TextMode="Password"时,将不被保存在ViewState
          在页面没回传或重定向时,不要使用ViewState
          

Session和ViewState的比较
                                Session                    ViewState
占服务器资源             true                           false
time out               true/20分钟                false/永不过期
存储类型               任何.net类型              只支持 string,int,array,arraylist等
加重html负担            false                           true

    Session 对整个application有效,而 viewstate相当于某个页面的 session
    定义 viewstate
        ViewState["name"]="value";
        string name = (string)ViewState["name"];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值