ラベルとボタンを持つaspxページがあるASP.Netでデータキャッシュに取り組んでいました。Cache が null でない場合、ラベルにはキャッシュされたデータが表示されます。それ以外の場合は、データがキャッシュに読み込まれ、ラベルに「DataReloading」が表示されます。ボタンをクリックすると、キャッシュからデータが消去され、ラベルに「DataReloading」が表示され、更新時にラベルに表示されます。ページを再度表示すると、ラベルに Cache Data が表示されます
期待:
1) 初めてページがロードされると、ラベルは「DataReloading」と表示されます。これは、キャッシュが空で、データをロードしているためです。
2) Refresh すると、Cache に「Cache Data」文字列が含まれていたため、Label に「Cache Data」が表示されます。
3)キャッシュをクリアするボタンをクリックすると、ラベルに「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";
}
}
}
}