首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

页面旋钮,放到缓存中。再次刷新页面,操作按钮的属性就失效了,不知道为什么啊求高手

2013-03-19 
页面按钮,放到缓存中。再次刷新页面,操作按钮的属性就失效了,不知道为什么啊?求高手问题描述:获取页面的所

页面按钮,放到缓存中。再次刷新页面,操作按钮的属性就失效了,不知道为什么啊?求高手
问题描述:获取页面的所有的LinkButton放到Dictionary<string, LinkButton>中,之后在把Dictionary<string, LinkButton>放到缓存中。第一次执行,按钮LinkButton2可以隐藏,再次刷新之后按钮LinkButton2会显示出来,调试结果是执行了LinkButton2.Visible=false。不知道哪里的问题啊?请高手指点指点。


页面代码


    <asp:LinkButton ID="LinkButton1" runat="server">LinkButton1</asp:LinkButton>
    <asp:LinkButton ID="LinkButton2" runat="server">LinkButton2</asp:LinkButton>
    <asp:LinkButton ID="LinkButton3" runat="server">LinkButton3</asp:LinkButton>


后台代码


 protected void Page_Load(object sender, EventArgs e)
        {
            foreach (KeyValuePair<string, LinkButton> item in GetPageControl())
            {
                if (item.Key.Contains("LinkButton2"))
                {
                    item.Value.Visible = false;
                }
            }
        }

        private Dictionary<string, LinkButton> GetPageControl()
        {
            string CacheKey = "aaaaa";
            object objDic = Common.DataCache.GetCache(CacheKey);
            if (objDic == null)
            {
                try
                {
                    Dictionary<string, LinkButton> dic = new Dictionary<string, LinkButton>();
                    foreach (Control childc in Page.Form.Controls)
                    {
                        if (childc is LinkButton)
                        {
                            dic.Add(childc.ID, childc as LinkButton);
                        }
                    }


                    objDic = dic;
                    if (objDic != null)
                    {
                        int cacheDic = Common.ConfigHelper.GetConfigInt("AdminPageControl");
                        Common.DataCache.SetCache(CacheKey, objDic, DateTime.Now.AddMinutes(cacheDic), TimeSpan.Zero);
                    }

                }
                catch { return null; }

            }

            return objDic as Dictionary<string, LinkButton>;
        }



dictionary 缓存?按钮 缓存 按钮
[解决办法]
什么乱七八糟的?谁告诉你这什么“缓存”的?你不知道asp.net每一次被请求时都开启了一个新的页面生命周期了吗?那么原来Page上的内容,你不扔掉还留着它干什么?
[解决办法]
每次刷新,成员变量就丢失了,因为asp.net产生一个新的Page对象。
[解决办法]
你都没有把控件加载到页面,怎么可能会出来呢?

Page.Controls.Add

热点排行