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 :

[.NET2] controle Web personnalisé - inscription CSS et JS


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Par défaut [.NET2] controle Web personnalisé - inscription CSS et JS
    Bonjour,

    Je suis en train d'écrire mon propre controle WEB définit par (je n'ai laissé que l'indispensable à la compréhension du pb)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    [assembly: WebResource("CMRCss.CMRCode.js", "text/javascript")]
    [assembly: WebResource("CMRCss.CMRStyle.css", "text/css")]
    namespace CMRCss {
     
        public class CMRColor : WebControl {
     
            protected override void OnPreRender(EventArgs e) {
                base.OnPreRender(e);
                if (Page == null) return;
                if (Page.Request == null) return;
                RegisterCommonScript();
            }
     
            protected void RegisterCommonScript() {
                String url;
                if (!Page.ClientScript.IsClientScriptIncludeRegistered("CMRColorJS")) {
                    url = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CMRCss.CMRCode.js");
                    Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "CMRColorJS", url);
                }
            }
            protected override void Render(HtmlTextWriter output) {
     
           }
        }
    }
    pour résumé, j'inscrit les scripts JS lors du prérendu de l'objet, après avoir testé si le script est déjà enregistré ou pas... cela fonctionne MAIS :

    l'inscription se fait dans le corps de la page ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    ....
    </head>
    <body>
    ....
     
    <script src="/WebResource.axd?d=6oCfncleDgDbl_IWei4zBtRquV-LCqS9-NZVoxkNyNw1&amp;t=633280615403125000" type="text/javascript"></script>
    ...
    </body>
    </html>
    j'aurais préféré qu'il se fasse dans l'entête de la page comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    ...
    <script src="/WebResource.axd?d=6oCfncleDgDbl_IWei4zBtRquV-LCqS9-NZVoxkNyNw1&amp;t=633280615403125000" type="text/javascript"></script>
    ...
     
    </head>
    <body>
    ....
     
    </body>
    </html>
    mais je ne vois pas comment faire ...
    Je précise bien que c'est un contrôle que je développe, pas une application . Si c'était une appli, je pourrais traiter le problème dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected void Page_Load(object sender, EventArgs e) {}
    Mais là ce n'est pas possible ...

    Plus grave, je ne trouve pas comment enregister un CSS tout en m'assurant qu'il n'a pas déjà été enregistré par un autre contrôle automatique. Il y a la solution d'ajouter une propriété statique indiquant si le CSS est inscrit ou pas, mais cette inscription se ferait dans le corps de la page (donc même problème que précédemment), et non l'entête. Or, XHTML 1 Transitional impose ses déclarations dans l'entête

  2. #2
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Il faut enregistrer les script et la feuille de style comme ressources du contrôle...

    Tu peux le faire au moyen d'instructions telles que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [assembly: WebResource("assembly.fichier.js", "application/x-javascript")]
    public class xxxxx...
     
    ....
     
    protected override void OnInit(EventArgs e)
    {
                base.OnInit(e);
                this.Page.ClientScript.RegisterClientScriptInclude(
                   this.GetType(), "DualListFunctions",
                   Page.ClientScript.GetWebResourceUrl(this.GetType(),
                   "assembly.fichier.js"));
    }

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Par défaut
    C'est probablement ce qu'il fait déjà puisqu'il a une url ajouté dans son body.
    A ma connaissance, ce n'est pas possible de le positionner dans le head.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Par défaut Merci
    Merci pour vos réponses, mais effectivement, c'est déjà ce que je fais... Je ne le fais pas par contre dans OnInit, mais dans OnPreRender...

    Je vais essayer dans OnInit, voir si cela déplace la déclaration...

  5. #5
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Citation Envoyé par Jarodtweiss Voir le message
    C'est probablement ce qu'il fait déjà puisqu'il a une url ajouté dans son body.
    A ma connaissance, ce n'est pas possible de le positionner dans le head.


    Ca m'apprendra à lire les post en entier

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Par défaut OnInit
    Bon, je viens de faire le test en gérant l'inscription dans OnInit au lieu de OnPrerender, et cela ne change rien :

    L'inscription se fait toujours dans <body> et non pas dans <head>.

    Si il est réellement impossible de faire l'inscription dans le head, cela veut dire qu'il est impossible d'avoir des documents certifiés conformes XHTML 1 Transitional ! (cette norme interdisant les définitions de style dans le body)

    Cela ne me plaisait déjà pas que ce que génère VS2005 soit du transitional et pas du Strict (ce que j'ai développé en PHP passait à la certification XHTML 1 Strict), mais en plus ce n'est pas conforme

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/12/2009, 18h00
  2. Control Web Personnalisé
    Par kendras dans le forum ASP.NET
    Réponses: 6
    Dernier message: 05/08/2008, 16h40
  3. LIRC et control web
    Par usf70 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/04/2007, 23h18
  4. Utilisation du control web Browser
    Par JACQUEY dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 17/02/2007, 08h36

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