呈现控件缓存时出错错误

问题描述:

我有一个自定义控件,显示从数据库中获取的值(产品的价格)。出于性能原因,该值存储在缓存中,并且工作正常。但是,在Visual Studio 2008的设计模式中,我收到一个错误信息:“错误呈现控件发生未处理的异常。缓存不可用”呈现控件缓存时出错错误

我正在使用ControlDesigner,并带有一个非常简单的GetDesignTimeHtml:

public override string GetDesignTimeHtml() 
{ 
    return "[$9.99]"; 
} 

我希望这能解决问题,但事实并非如此。

您需要为自定义控件的缓存访问添加包装,否则当HttpContext.Current为null时,它们将在设计模式下失败。你想要做这样的事情:

public object GetFromCache(string key) 
{ 
    var myContext = HttpContext.Current; 
    if(myContext != null) 
    { 
     return myContext.Cache[key]; 
    } 
    return "[Design Time Value]"; 
} 

你是否直接引用ASPX文件中的Cache对象?