日期:2014-05-19  浏览次数:20452 次

缓存数据问题!
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