2009-06-22 3 views
3

J'ai créé un contrôle qui utilise un ITemplate en interne afin de permettre à l'utilisateur d'ajouter ses propres éléments.ASP.net Page objet null lors de l'invocation depuis le contrôle basé sur un modèle

<my:MyControl id="myControl" runat="server"> 
    <Content> 
     //some stuff in here 
    </Content> 
</my:MyControl> 

La propriété "Content" est le modèle. (Ceci est juste simplifié, cette construction est dans un plus grand contrôle).

Maintenant, j'ai le problème que mon utilisateur place son propre UserControl dans le <Content>..</Content>. Cela ne devrait pas poser de problème, mais UserControl appelle la chaîne QueryString de l'événement PageLoad. Et maintenant, j'ai reconnu que l'objet Page est null lorsque le UserControl réside dans le modèle alors qu'il fonctionne s'il est placé à l'extérieur, normalement sur la page.

Est-ce que quelqu'un a une idée de ce qui pourrait être le problème ici?

Répondre

9

J'ai vu un cas où this.Page retourné null à partir d'un contrôle utilisateur imbriqué.

Dans ce cas, en utilisant la construction (Page)HttpContext.Current.Handler pour obtenir l'objet de page a bien fonctionné.

+0

Thx pour votre publication. Le problème est simplement que l'appel à l'objet page est effectué dans l'un des contrôles utilisateur que certains développeurs utilisant mon contrôle ont pu écrire. Donc je n'ai aucun contrôle sur ça ... – Juri

1

Je ne sais pas si elle est d'une utilisation plus, mais peut-être encore à quelque chose ...

Lorsque vous instancier le modèle (avec InstantiateIn), est la hiérarchie de contrôle résultant effectivement ajouté à vos MonContrôle de Controls collection? AFAIK, c'est le moyen de s'assurer que vous avez une propriété de page non-null.

Questions connexes