2009-01-30 5 views
3

J'ai un contrôle personnalisé qui affiche une valeur obtenue à partir de la base de données (le prix du produit). Cette valeur est stockée dans le cache pour des raisons de performances et fonctionne correctement. Toutefois, en mode Création dans Visual Studio 2008, j'obtiens une erreur qui indique "Erreur Rendering Control Une exception non gérée s'est produite Le cache n'est pas disponible"Le cache de contrôle du rendu de rendu n'est pas disponible

J'utilise un ControlDesigner, avec un GetDesignTimeHtml très simple:

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

J'espérais que cela réglerait le problème, mais ce n'est pas le cas.

Répondre

4

Vous devez ajouter un wrapper à votre accès au cache pour les contrôles personnalisés, sinon ils échoueront en mode création lorsque HttpContext.Current est null. Vous voulez faire quelque chose comme ceci:

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

Faites-vous directement référence à l'objet Cache dans votre fichier ASPX?

Questions connexes