IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Déclaration d'un user control dans le web.config


Sujet :

ASP.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Déclaration d'un user control dans le web.config
    Bonjour,

    Voilà, j'ai décidé d'utiliser des user controls pour composer mes pages (ce qui évite de coder plusieurs fois le même panneau) mais j'ai un soucis lors de la déclaration de mes contrôles pour pouvoir les utiliser dans mes pages.

    Je précise que j'ai défini mes contrôles dans le même projet que l'application (il me semble que si je fais un projet de type "bibliothèque de contrôles, je ne peux pas y faire de .ascx, mais si c'est possible, je préférerais...).

    J'ai réussi à utiliser mon premier contrôle en le déclarant directement dans la page avec la directive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ register tagprefix="cc1" tagname="name" src="~/controls/ctl1.ascx" %>
    Ça fonctionne, mais
    1) je vais être obligée de déclarer dans ma page tous les contrôles que je veux y utiliser individuellement
    2) je vais devoir le faire dans chaque page

    J'ai lu quelque part qu'on pouvait faire cette déclaration dans le web.config comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <pages>
    	<controls>
    		<add tagPrefix="cc1" tagName="name" src="~/controls/ctl1.ascx" />
    	</controls>
    </pages>
    Mais le contrôle n'affiche alors rien (bien que je n'ai aucun message d'erreur.

    J'ai tenté la même chose en essaynt de déclarer mon contrôle à partir de mon assembly :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ register tagprefix="cc1" assembly="MonAssembly" namespace="MonNamespace" %>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <pages>
    	<controls>
    		<add tagPrefix="cc1" assembly="MonAssembly" namespace="MonNamespace" />
    	</controls>
    </pages>
    Mais ça ne fonctionne pas mieux... (toujours pas d'erreur, mais ça n'affiche rien).
    (L'idéal serait cette dernière solution puisqu'elle me permettrait de déclarer tous mes contrôles pour toute l'application d'un seul coup )

    Je précise aussi que mon contrôle ne fait pour l'instant rien de particulier : j'ai juste du code HTML dans le .ascx.

    Si quelqu'un pouvait m'indiquer comment faire ou me mettre sur la voie, ça serait sympa

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    assembly c'est pour les customs controls

    pour un user control, dans le web config, c'est bien à la section pages/controls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      <system.web>
     
        <pages>
          <controls>
            <add tagPrefix="cc1" src="~/controls/ctl1.ascx" tagName="monUc"/>
          </controls>
        </pages>
     
      </system.web>
     
    </configuration>
    à utiliser ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <cc1:monUc ID="MonUserControl" runat="server" />
    mais si tu n'as pas d'erreur à l'execution, ca doit venir d'autre chose

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, je vais réessayer

    Si tu as encore un peu de temps, tu peux me dire en deux mots quelle est la différence entre custom control et user control ? merci



    EDIT: ok, j'avais pas mis le champ ID, je pense que c'est pour ça que ça ne fonctionnait pas

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    je peux le dire

    mais je laisserai la faq asp.net le faire http://dotnet.developpez.com/faq/asp...rolUserControl

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ok, effectivement, c'est dans la FAQ (dommage qu'on tombe pas dessus directement en tapant "user control" dans la recherche... mais bon).

    Ce dont j'ai besoin s'approche plutôt d'un user control effectivement je pense, c'est vraiment pour faire genre un formulaire de recherche qui se retrouvera sur plusieurs page ou des choses comme ça.

    Maintenant, j'ai un autre petit soucis : est-ce qu'on peut d'une manière ou d'une autre passer à un contrôle utilisateur un objet (donc pas une simple chaîne de caractère) de manière à pouvoir afficher certaines de ces propriétés (string cette fois) dans les champs de formulaire (du contrôle) par exemple ?

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    bien sur, c'est aussi expliqué dans la faq http://dotnet.developpez.com/faq/asp...mToUserControl
    l'exemple est une chaine de caractère, mais tu peux bien sur utiliser n'importe quel type d'objet

  7. #7
    Invité
    Invité(e)
    Par défaut
    Voui, en effet
    J'crois que je l'avait lu en plus

    Merci en tout cas

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour, je reprends ce topic parce que ça traite du même sujet...

    Voilà, j'ai finalement opté pour la solution de définir mes UserControls dans mon site web et de les charger systématiquement avec LoadControl() comme ça pas de soucis.

    Pour plus de clarté, je les ai déclaré dans un namespace à part de manière à pouvoir facilement les retrouver. De plus certains de mes contrôles en utilisent d'autres de mes contrôles en les instanciant par LoadControl()

    Tout allait bien jusqu'à présent, dans VisualStudio200. J'avais créé mon projet en faisant File/New/Project... et là j'avais choisi VisualC#/Web/ASP.NET Web Application. Tout compilait sans problème et il me trouvait les références à mes contrôles.

    Cependant, c'est pas comme ça que j'aurais dû créer mon projet (c'est pas compatible avec notre moteur de compilation et de déploiement) et j'ai du le recréer en faisant File/New/WebSite... Et là, il ne veut plus me charger mes contrôles dans mes autres contrôles qui les utilisent... Il me dit un truc du genre "Error 11 The type or namespace name 'TextField' does not exist in the namespace 'MyNameSpace.Controls' (are you missing an assembly reference?) ...\Controls\AskForm.ascx.cs 20"

    Est-ce que quelqu'un aurait une idée ?
    J'ai essayé en les sortant du namespace, mais ça ne fonctionne pas mieux...
    C'est comme s'il oubliait d'aller regarder les autres élément du site web avant de compiler et que du coup, il pensait ne pas les avoir...

    Merci d'avance à quiconque pourra m'aider parce que ça urge un peu Si il manque une information surtout n'hésitez pas à demander !

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    as tu bien les using qu'il faut?

    notament:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Web.UI.WebControls;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Web.UI.HtmlControls;
    au cas ou

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse

    Oui oui, ça, ça ne pose pas de problème, ce sont vraiment mes contrôles à moi qu'il ne trouve pas.

Discussions similaires

  1. Ajout web user control dans un placeholder
    Par gabdeschenes dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/11/2009, 16h47
  2. web user control dans un web user control
    Par Gr@nd@x dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/11/2009, 12h24
  3. Propriété d'un user control dans la boite propriété ?
    Par le_chomeur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/07/2009, 14h52
  4. Afficher un user control dans une form
    Par andromeda dans le forum C#
    Réponses: 1
    Dernier message: 28/04/2009, 11h12
  5. Réponses: 1
    Dernier message: 25/04/2009, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo