缓存数据问题!
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
this.BindDrawdownList();
}
private void BindDrawdownList()
{
list = skillMatrixSys.GetAllSkillMatrix();
this.ddlSelectSkill.DataSource = list;
this.ddlSelectSkill.DataMember = "SkillName ";
this.ddlSelectSkill.DataBind();
Cache[ "skillMatrix "] = list;
}
private void GetCache()
{
list = Cache[ "skillMatrix "] as IList <PmsSkillmartrixEntity> ; // list怎么一直是null?
}
缓存用法有问题吗?第一次用,不太清楚.
------解决方案--------------------从语法上讲,基本没什么问题,不过可以稍稍改进一下.
private void BindDrawdownList()
{
list=Cache[ "skillMatrix "];
if(list==null)
{
list = skillMatrixSys.GetAllSkillMatrix();
Cache[ "skillMatrix "] = list;
}
this.ddlSelectSkill.DataSource = list;
this.ddlSelectSkill.DataMember = "SkillName ";
this.ddlSelectSkill.DataBind();
}
PS,其实实现缓存并不难,ASP.NET 2.0提供了很多方式缓存,比如内存,硬盘,包括缓存的管理功能也相当多,比如缓存的过期时间,缓存位置等.所以在设计一定要注意分析,切不可乱使用,如果到处使用缓存会极大占用系统资源,反而起不到缓存作用.注意关键一个度的问题.
------解决方案--------------------if (!IsPostBack)
this.BindDrawdownList();
你是要在 按钮的 post以后再缓存
还是页面一输出就缓存?
如果后者
应该去掉if(!IsPostBack)
------解决方案--------------------如果Cache[ "skillMatrix "] 已经得到值了,再检查是不是ispostback问题。
------解决方案--------------------hertcloud(·£孙子兵法£·)
=========================
正解
lz还可以用viewstate