澄清ASP.NET中的缓存

时间:2013-08-30 15:19:31

标签: asp.net

我们正在ASP.Net中进行数据缓存,我们有aspx页面,它有一个Label和一个Button。  如果Cache不为null,Label将显示缓存数据,否则它会将数据加载到缓存中并在Label中显示“DataReloading”,Click of a Button应清除缓存中的数据,Label应显示“DataReloading”,当我们刷新时再次页面,标签应显示缓存数据

期望:

1)首次加载页面时,Label应显示“DataReloading”,因为Cache为空,我们正在加载数据

2)当我们刷新时,Label应该显示“缓存数据”,因为缓存中有“缓存数据”字符串

3)当我们点击按钮清除缓存时,Label应显示“DataReloading”,当我们刷新页面标签时应显示缓存数据

我们面临的问题是点击发布按钮,我们总是在标签中获得“DataReloading”。

任何人都可以告诉我们逻辑错误的地方。

这是aspx页面的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace FormAuthenticationPractice
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                LoadCache();
        }

        private string GetData()
        {
            return "Cache Data";
        }

        protected void btnClearCache_Click(object sender, EventArgs e)
        {

                Cache.Remove("Data");
                lblData.Text = "DataReloading";

        }

        private void LoadCache()
        {
            if (Cache["Data"] != null)
            {
                lblData.Text = Convert.ToString(Cache["Data"]);

            }
            else
            {

                Cache["Data"] = GetData() as string;
                lblData.Text = "DataReloading";

            }
        }
    }
}

0 个答案:

没有答案