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 :

évaluation dynamique d'une propriété d'un contrôle web


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 13
    Points
    13
    Par défaut évaluation dynamique d'une propriété d'un contrôle web
    Bonjour à tous,
    je cherche le moyen d'évaluer dynamiquement le contenu d'une propriété d'un contrôle personnalisé qui hérite de WebControl.

    admettons que mon contrôle soit un textbox,
    je cherche à pouvoir écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:TextBox runat=server Text='<%= DateTime.Now %>' />
    Le résultat escompté est que lorsque la page est parsée, le moteur asp assigne à la propriété Text la valeur évaluée contenue entre "<%=" et "%>" (si ces balises apparaissent).

    le contrôle TextBox a ce comportement par défaut, j'aimerais pouvoir reproduire ce comportement dans un contrôle que je crée moi-même, et que ce soit possible pour plusieurs propriété de mon contrôle.

    je me creuse la tête dans reflector, sur le net et dans l'aide mais rien n'y fait... Quelqu'un connait-il la solution?

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Pourquoi souhaites-tu absolument affecter une valeur à la propriété d'un contrôle depuis l'aspx ?
    Il y a le .cs ou le .vb pour ça!

    j'aimerais pouvoir reproduire ce comportement dans un contrôle que je crée moi-même
    Tu parles d'un UserControl ?
    Idem : plutôt que de passer par l'ascx, déclare une propriété publique dans ton usercontrol, sette sa valeur depuis la page hébergeant ton usercontrol et affecte sa valeur à la propriété de ton choix.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Pourquoi souhaites-tu absolument affecter une valeur à la propriété d'un contrôle depuis l'aspx ?
    Il y a le .cs ou le .vb pour ça!
    Au début, j'avais l'habitude de mettre tout le code dans le code behind puis j'ai vite trouvé que ça posait soucis pour la maintenance visuelle.
    Du code de contrôle et de préparation de données est le bienvenu dans le code behind mais en ce qui concerne l'affichage et les inputs, je trouve qu'ils ont leur place dans le corps du handler (aspx, ascx).

    une solution facile est de mettre ce code entre des balises script runat="server". Néanmoins, je trouve encore plus clair (de loin) d'avoir ces évaluations directement dans les propriétés associées.
    Chercher la solution est donc certainement une perte de temps mais
    la trouver me rendra bien plus satisfait de la méthodologie asp.net

    Je suis convaincu que c'est possible puisque ça l'est pour les contrôles "natifs".

    Citation Envoyé par calagan99 Voir le message
    Tu parles d'un UserControl ?
    Idem : plutôt que de passer par l'ascx, déclare une propriété publique dans ton usercontrol, sette sa valeur depuis la page hébergeant ton usercontrol et affecte sa valeur à la propriété de ton choix.
    je parle d'un WebControl. une solution pour les UserControl me plairait assez bien aussi, je suis donc preneur s'il existe une solution hybride .

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Dans la mesure où les aspx et ascx sont là pour gérer la présentation pure et le code behind utilisé pour la définition des méthodes, des fonctions, des events, pour définir le binding, etc. je ne pense pas que ton approche soit la bonne.

    C'est une question de feeling, mais il me paraît bien plus simple de n'utiliser ascx et aspx que pour y glisser des contrôles dont tous les comportement est gérés par le code behind.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Non ce n'est pas possible pour les contrôles natifs, ou même pas natifs de faire ce que tu veux: soit tu as un webcontrol avec une propriété (que tu peux modifer en code-behind):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:TextBox runat=server Text="plop" />
    Soit tu as un contrôle html avec un binding:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" value='<%= DateTime.Now %>' />
    Mais dans tous les cas tu ne pourra pas avoir les deux en même temps, car il faudrait "parser" deux fois ton aspx en html.

    si tu tiens vraiment à avoir ce comportement, creer des webcontrols qui ont une propriété du genre "EvalToDo" qui contient un enum de possibilité d'éval possible et lors de ton pageLoad affectecte le .text de ta textbox avec le résultat ( c'est pas propre non plus).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    je pense que mon erreur vient du fait que j'essaie d'avoir le même résultat que quand un contrôle est dans un template, sans qu'il soit dans un template...

    mais... est-ce vt une erreur de vouloir cela?

Discussions similaires

  1. Réponses: 20
    Dernier message: 18/01/2015, 23h33
  2. évaluation dynamique d'une variable
    Par pacman74 dans le forum C++
    Réponses: 6
    Dernier message: 06/03/2012, 18h20
  3. Réponses: 3
    Dernier message: 22/02/2011, 16h24
  4. ajout dynamique d'une page dans un contrôle onglet
    Par oclone dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/02/2008, 16h31
  5. creer une propriété accèssible via le web
    Par minette dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/09/2006, 16h41

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