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 :

[XHTML] Comment créer un site certifié XHTML ?


Sujet :

ASP.NET

  1. #1
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut [XHTML] Comment créer un site certifié XHTML ?
    Bien le bonjour à tous

    je dois réaliser un site en utilisant ASP .NET (donc avec du C#). Je souhaiterais cependant que ce site soit certifié XHTML strict 1.0. Ma démarche est donc la suivante (elle est en fait celle que j'utilise pour faire des sites en php) :
    - je crée un site (une sorte de "template") tout bien certifié comme il faut, avec du beau css et du xhtml dans tous les sens.
    - j'enlève ensuite le code qui m'intéresse pour le remplacer par du php, afin de rendre dynamique ledit site, tout en conservant ainsi sa certification xhtml.

    Ma question est la suivante : est ce possible de faire la même chose avec ASP.net ? J'ai en fait peur qu'une fois mon code collé dans l'environnement de développement .NET, il ne me change mon code, ou me modifie les balises, et que le site ne soit ainsi plus certifié (ce qui serait malheureux).

    Quelqu'un s'est il déjà intéressé à la question ?

    Merci par avance pour toute aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut Re: [ASPX][XHTML] Créer un site certifié XHTML ac ASP.NET
    C'est plus ou moins possible comme ça. Le principal problème viendra de l'affichage de table et autres listes de longueur variable. Par infaisable, loin de là, mais ça nécessite de se créer son ou ses propres contrôles spécifiques pour ça (documentation à voir sur les 'templated controls').

    Mais sinon, c'est faisable. En exploitant les user controls pour découper les différents éléments des pages pour les assembler bien comme il faut ensuite.

    Par contre, une chose est claire et nette : si tu veux faire du XHTML+CSS valide, oublie le designer et les contrôles MS, placeholder excepté. Plus simplement, tu peux changer le mode d'ouverture des fichiers aspx/ascx pour l'éditeur de code source plutôt que le designer de VS.NET, qui modifiera ton code justement comme tu ne veux pas, et qui est incapable de générer du code conforme.

    Bref, pour faire simple : oui c'est possible, oui c'est plus compliqué (au départ) que la méthode "designer", oui ça vaut le coup (oui, c'est ce que je fais depuis deux ans, sans aucun regret :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  3. #3
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut Re: [ASPX][XHTML] Créer un site certifié XHTML ac ASP.NET
    Citation Envoyé par regbegpower

    Quelqu'un s'est il déjà intéressé à la question ?
    Oh oui !!
    Cela a d'ailleurs fait l'objet de quelques discussions...
    T'as au moins deux "alliés" dans ta démarche en les personnes de Maniak et moi-même

    Je vais essayer de te résumer :

    La quasi totalité des contrôles proposés par le framework (System.Web.UI.WebControls et System.Web.UI.HTMLControls) sont très pratiques à utiliser mais ne rendent que très rarement du code XHTML conforme...Ce "très rarement" tend plutôt vers le "jamais" dès que le client n'est plus IE6.

    Le moyen est bien entendu de se rendre complétement maître du code HTML renvoyé, et pour ça, il faut redévelopper ses propres contrôles.

    Visual Studio.net est un IDE absolument fabuleux, mais encore une fois, au niveau respect de standards c'est médiocre. Il ne faut donc absolument pas lui faire confiance lorsqu'il te signal des "erreurs" dans l'éditeur HTML...

    L'éditeur CSS de VS souffre du même problème...Si tu essais d'utiliser un attribut standard mais non-supporté par IE, pour lui c'est une erreur...

    Utiliser le mode "Design" des webforms est peut être génial en terme de productivité, mais en terme de normes, cela s'apparente au suicide.

    Conclusion :

    Il est tout à fait possible de créer des sites certifiés xhtml 1.1 strict, CSS2, etc...Mais au prix d'un effort supplémentaire.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  4. #4
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Merci pour ta réponse.

    En fait j'ai déjà fait une bonne partie du design "à la main" en utilisant le bon vieux notepad (ou son équivalent coloration syntaxique bien sur).

    Donc je vais me pencher sur la question, si tu me dis que c'est faisable.

    Par " tu peux changer le mode d'ouverture des fichiers aspx/ascx pour l'éditeur de code source plutôt que le designer de VS.NET", veux-tu dire par là que VS peut m'ouvrir par exemple PSPad comme éditeur par défaut ?

  5. #5
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Ben tiens, je te parlais de Maniak...il m'a devancé

    J'étais sûr qu'il réagirait.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  6. #6
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Keihilin
    Ben tiens, je te parlais de Maniak...il m'a devancé

    J'étais sûr qu'il réagirait.
    En effet

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par regbegpower
    Par " tu peux changer le mode d'ouverture des fichiers aspx/ascx pour l'éditeur de code source plutôt que le designer de VS.NET", veux-tu dire par là que VS peut m'ouvrir par exemple PSPad comme éditeur par défaut ?
    Non non, juste que si tu fais un clic-droit sur un fichier aspx par exemple, tu auras l'option "Ouvrir avec". Ça t'affiche une liste, dans laquelle l'éditeur HTML est indiqué par défaut.

    Si tu sélectionne l'éditeur de code et que tu l'affectes par défaut, tu pourras ouvrir directement tous les fichiers HTML dans un éditeur texte "normal", avec colorisation syntaxique et tout, sans te taper le designer au milieu.
    Tu fais de même avec les .ascx, .css etc, et c'est le paradis, pas besoin de passer par un éditeur externe :)

    PS: Keihilin, tu es trop gentil avec VS.NET là. "au niveau respect de standards c'est médiocre" ? "ridiculement minable" serait plus exact non ? :)

    Ah, ça me fait penser, un des trucs les plus importants de tous :
    dans les options de VS.NET, Text Editor -> HTML/XML -> tout ce qui touche à la validation, au remplissage automatique ou à quoi que ce soit qui ait un rapport avec le langage -> désactivé (grosso modo, faut tout virer :)

    Le validateur HTML de VS.NET est... euh... risible, celui pour le CSS ne vaut pas mieux, le remplissage automatique est pitoyable, bref...

    VS.NET c'est excellent pour faire le code des pages en C# [troll](voire VB.NET si tu es maso :)[/troll], mais en tant k'éditeur web, c'est une daube monstrueuse :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  8. #8
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Maniak

    PS: Keihilin, tu es trop gentil avec VS.NET là. "au niveau respect de standards c'est médiocre" ? "ridiculement minable" serait plus exact non ?
    En fait, c'est surtout la direction prise par MS en se moquant des standards qui est ridicule

    Citation Envoyé par Maniak
    Ah, ça me fait penser, un des trucs les plus importants de tous :
    dans les options de VS.NET, Text Editor -> HTML/XML -> tout ce qui touche à la validation, au remplissage automatique ou à quoi que ce soit qui ait un rapport avec le langage -> désactivé (grosso modo, faut tout virer

    Le validateur HTML de VS.NET est... euh... risible, celui pour le CSS ne vaut pas mieux, le remplissage automatique est pitoyable, bref...
    Oui pitoyable...Mais (et c'est la que VS devient génial) modifiable !!!
    Si t'en as le courage, tu peux aller complètement modifier les fichiers xml qui servent pour l'auto-completion et la validation et les rendre plus conforme...C'est un gros boulot, mais c'est un investissement à long terme.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Keihilin
    Ben tiens, je te parlais de Maniak...il m'a devancé :D

    J'étais sûr qu'il réagirait.
    Toujours présent pour taper sur le support pitoyable du HTML dans VS.NET et .NET en général :)
    (et sur VB.NET, mais pas pour les mêmes raisons :)

    Citation Envoyé par Keihilin
    Oui pitoyable...Mais (et c'est la que VS devient génial) modifiable !!!
    Si t'en as le courage, tu peux aller complètement modifier les fichiers xml qui servent pour l'auto-completion et la validation et les rendre plus conforme...C'est un gros boulot, mais c'est un investissement à long terme.
    Wai possible. Ça je t'avouerai ne pas trop m'y être attardé :)
    J'ai un magnifique pluging pour Firebird/fox pour valider les pages locales en deux clics, la référence du CSS2/HTML/XHTML1.1 en bookmark, accessible en deux clics aussi, et depuis le temps je connais assez bien le HTML :)
    Donc l'auto-completion... les tags sont courts, les attributs peu nombreux (quand on utilise le CSS) et courts eux-aussi, quant à la validation, pourquoi s'embêter à bidouiller le validateur bidon de VS.NET quand on en a un bien meilleur à portée de souris ? :)


    Enfin bref : vive le XHTML qui marche partout, à mort le HTML bancal qui ne marche que sous IE, et à mort les contrôles MS intégrés à ASP.NET :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  10. #10
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    merci à tous les deux

    je mets le tag résolu mais sentez vous libre de me donner encore des conseils

    merci pour le lien pour le plugin de validation, je vais tester ca de suite, ca a l'air excellent.

  11. #11
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    je retire le tag résolu car j'aurais encore besoin de vos conseils


    alors voilà, j'ai écrit mes "templates" en xhtml , tout est certifié, c'est bien joli.
    J'ai écrit en c# mes classes de conection à la base de données. Il ne me reste maintenant qu'à résoudre le petit problème suivant.

    Je dois lister des données. La manière la plus simple de le faire est bien sûr d'utiliser le composant "table". Mais si je le fais -> le code n'est plus certifié...
    Ce que je fais pour le moment est d'utiliser un ensemble de balises div. J'ai la syntaxe suivante dans mon code :

    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
     
    <div class="array">
      <div class="row">
        <span class="name">Bla bla</span>
        <span class="course">MSc IT</span>
        <span class="editbutton"></span>
        <span class="deletebutton"></span>
      </div>
      <div class="row">
        <span class="name">Bla bla</span>
        <span class="course">MSc IT</span>
        <span class="editbutton"></span>
        <span class="deletebutton"></span>
      </div>
    </div
    Comme vous le voyez, chaque "div" correspond à une ligne du "tableau".

    Afin de remplir mon tableau (qui je le rappelle est composé de div), dois je créer mon propre composant ? Comment puis je procéder ? merci beaucoup pour votre aide.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Ah, tu arrives à la partie la plus tordue du développement de contrôles persos :)
    Une fois que tu maîtrises ça, tout roule au poil (enfin il n'y a plus que des problèmes de dev 'normaux' :), mais c'est pas forcément évident :)

    Donc pour générer des listes de données, tout en conservant le contrôle du code XHTML généré, il te faut un templated control (il y a toute une rubrique de MSDN dédiée à ça). C'est un peu long d'en faire le tour, donc commence par MSDN pour les grandes lignes, on pourra affiner après.

    Je te fais un topo rapide (prends ta respiration, y a pas de pause :), mais t'as peu de chance de saisir du premier coup. MSDN et quelques tentatives sont un passage obligé :)

    Grosso modo, il te faut une classe dérivant de System.Web.UI.Control, avec l'attribut [ParseChildren(true)]. Tu lui donnes plusieurs propriétés de type ITemplate, avec pour chaque l'attribut [TemplateContainer(typeof(TemplateControl))] (TemplateControl pouvant être remplacé par le nom de la classe correspondant à un template donné.
    Enfin, dans la méthode CreateChildControls, tu composes le contenu de ton contrôle, en créant des 'conteneurs' de type Control (ou dérivé), dans lesquels tu instancies le template correspondant, avant de les ajouter à la collection Controls.

    C'est probablement incompréhensible dit comme ça, mais le passage par MSDN d'abord est vraiment impératif :)

    Côté XHTML, ça te donnera un truc du genre :
    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
     
    <TonPrefixe:TonControle runat="server">
      <HeaderTemplate>
       <table>
         <tr>
           <th>Entête1</th>
           <th>Entête2</th>
         </tr>
      </HeaderTemplate>
     
      <ItemTemplate>
        <tr>
          <td><%# Container.Donnee1 %></td>
          <td><%# Container.Donnee2 %></td>
        </tr>
      </ItemTemplate>
     
      <FooterTemplate>
        </table>
      </FooterTemplate>
    </TonPrefixe:TonControle>
    Ce qui signifie pour cet exemple-là :
    - une classe TonControle, dérivant de System.Web.UI.Control, avec l'attribut ParseChildren
    - trois propriétés de type ITemplate (HeaderTemplate, ItemTemplate, FooterTemplate)
    - HeaderTemplate et FooterTemplate peuvent avoir l'attribut [TemplateContainer(typeof(TemplateControl))] vu qu'ils n'ont pas de contenu spécial
    - ItemTemplate aurait un attribut [TemplateContainer(typeof(TonConteneur))], TonConteneur étant une autre classe, dérivant toujours de System.Web.UI.Control ainsi que de INamingContainer, à laquelle tu donnes toutes les propriétés que tu veux, comme un UserControl normal. Tu accèdes à tout ça (uniquement à l'intérieur du tag du template correspondant) via la syntaxe <%# Container.Propriété/Méthode %>, un peu comme les <%= habituels.

    Dans TonControle, tu te débrouilles pour passer la liste des données qu'il faut afficher, dans OnLoad tu appelles DataBind, qui appellera OnDataBinding dans lequel tu appelles EnsureChildControls, qui appellera CreateChildControls où tu créeras les conteneurs et instantiera les templates pour tout ce que tu veux.

    Tu peux respirer :)


    Dans les grandes lignes, ça se résume à ça. Il faut un peu de pratique pour bien cerner le principe, mais ensuite il n'y a aucune difficulté à faire des templated controls du gabarit du DataGrid, mais bien plus adapté à ce dont tu as besoin, en conservant le contrôle sur le code généré, et sans avoir à passer par du late-binding (DataBinder ou je sais plus trop quoi, qui est lourd et lent, et qui devient inutile quand tu indiques le type de ton conteneur via l'attribut [TemplateContainer])



    Bon ben moi qui voulait faire bref... :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  13. #13
    En attente de confirmation mail

    Inscrit en
    Novembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    J'ai réussi à créer mon premier contrôle, je vous remercie tous et particulièrement maniak pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XHTML] Comment mettre du css dans un mail envoyé par mon site?
    Par starr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 29/12/2006, 07h48
  2. [XHTML] comment insérer une vidéo.wmv
    Par girondins76 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 29/03/2006, 23h13
  3. [Joomla!] Comment procéder pour miggrer/évoluer Site Internet
    Par papouAlain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/02/2006, 10h31
  4. Comment aprendre à créer un site ?
    Par balatom dans le forum Débuter
    Réponses: 5
    Dernier message: 10/01/2006, 21h04
  5. comment imprimer les page du site ?
    Par remond dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/12/2005, 12h02

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