【发布时间】:2013-08-20 15:48:00
【问题描述】:
我希望从当前页面访问一种方法,该方法创建动态控件并将它们附加到更新面板。我想在我的 CacheItemUpdateCallback 结束时调用这个方法来显示缓存中的新数据。
经过一些研究,您似乎无法从异步方法访问 HttpContext.Current,因为它是特定于线程的。
在将新值写入缓存后,是否有更好的流程来强制刷新动态内容,或者是否有方法可以从我的 CacheItemUpdateCallback 访问 HttpContext.Current?
创建内容的方法,其中containers是我页面上的一个div对象数组:
public void createInnerHtml()
{
this.contentLength = ddlContentNumber.SelectedIndex + 1;
for (int i = 0; i < this.contentLength; i++)
{
containers[i].Controls.Clear();
containers[i].Attributes["Data-Value"] = mainFeeds[i].DataValue.ToString();
containers[i].InnerHtml = mainFeeds[i].getHeaderString();
containers[i].Controls.Add(controlManager.getControl(mainFeeds[i]));
}
}
我想做的事:
private void openIncidentsUpdateCallback(string key, CacheItemUpdateReason reason, out object expensiveObject, out CacheDependency dependency, out DateTime absoluteExpiration, out TimeSpan slidingExpiration)
{
dependency = null;
absoluteExpiration = DateTime.Now.AddSeconds(25);
slidingExpiration = Cache.NoSlidingExpiration;
expensiveObject = getExpensiveObject()
Page page = (Page)HttpContext.Current.Handler;
if (page != null)
{
((ReportPage)page).createInnerHtml();
page.updatePanel1.update()
}
}
【问题讨论】:
标签: c# asp.net caching dynamic updatepanel