static误区,ViewState使用方法

本来早就知道使用了static的误区,无想这次给自己下了一个圈套。

在代码页全局变量定义了一个对象

protected static MyClass my_obj = null;

本来就是想要这个对象在该页面全局存在,并且会记录页面postback的值。static是可以实现的。

问题在于static的变量是存在于服务器,并且static的值共享给每个访问该页面的用户,这样用户A和用户B同时访问该页面,以static定义的变量属于共享性质,A编辑的时候值是10,而B编辑的时候值改成了20,这时,A保存的时候,变量的值就成了20而非10了。

所以出现了多用户保存,而保存的值错乱不知何故。如是也。

客户反映,我第一反应就是这个static的问题了。果真如此。

于是就是使用ViewState了。

    protected MyClass my_obj{
        get{return (MyClass)ViewState["my_obj"];}
        set{ViewState["my_obj"] = value;}
    }

于是我这个代码页都不需要修改把定义的方式改成get和set的方式。

但是MyClass在定义的时候需要作可序列化的标示。

[Serializable]
public class XW_work_item : TableBase{

//

}

否则会出现viewstate 未标记为可序列化 出错提示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值