2010-06-30 3 views
3

J'ai quelques contrôles dans mon assembly 'GeneralControls' (DLL classique), ceux-ci se composent de fichier .ascx (et de codebehind pour eux).Contrôles ASP.NET d'assemblages différents

Je fais référence que DLL, et en utilisant les contrôles:

<%@ Register Tagprefix="g" Assembly="GeneralControls" Namespace="GeneralControls.UI" %> 


<g:FooterControl ID="Footer" runat="server" /> 

mais FooterControl contient d'autres contrôles (étiquettes, etc.), et ceux-ci, utilisés de codebehind, jette NullArgumentException. Quelle est la bonne façon de partager les contrôles ascx? Merci d'avance.

Répondre

3

Les contrôles utilisateur (.ascx) doivent exister dans le projet Web à partir duquel ils sont utilisés. Vous ne pouvez pas les déplacer vers un autre assemblage à des fins de partage.

Si vous voulez avoir des contrôles partagés, vous avez besoin d'un contrôle serveur personnalisé qui ne possède pas le modèle déclaratif, tous les contrôles enfants doit être créé dans le code par CreateChildControls majeur, etc.

http://support.microsoft.com/kb/893667 (voir la section intitulée "Quelles sont les différences de base entre les contrôles utilisateur et les contrôles personnalisés?")

+0

Oh, j'espérais que ce n'est pas vrai, et il existe une solution de contournement, ou n'importe quelle méthode pour compiler ascx .. Merci. – nothrow