Don't cache ASP.NET control object instances.  Cache the HTML and construct a new HtmlLiteralControl from it, or encapsulate the control into a User Control and use page fragment caching instead.