读书人

页面旋钮放到缓存中。再次刷新页面

发布时间: 2013-03-19 17:22:05 作者: rapoo

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

读书人网 >asp.net

热点推荐