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 :

Le InnerHTML pas litéral


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Le InnerHTML pas litéral
    Bonjour à tous.

    J'ai un souci avec la transformation d'un DIV en texte.
    Je pose le code et j'explique en dessous :
    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
    27
    28
     
    <%@ WebHandler Language="VB" Class="Rotation" %>
     
    Imports System
    Imports System.Web
    Imports ProjetY.Rotation
     
    Public Class Rotation : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
            context.Response.ContentType = "text/plain"
            context.Response.Write(Rotation())
        End Sub
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
        Function Rotation() As String
            Dim divR As New UI.HtmlControls.HtmlGenericControl("div")
            divR.Controls.Add(AffichageRotation("17/01/2017"))
            Dim strRtour As String = divR.InnerText.ToString
            Return strRtour
        End Function
     
    End Class
    Ceci ce passe dans un fichier ASHX et je dois garder ce type de fichier car je souhaite avoir juste une chaîne de caractère en restitution, rien de plus. Donc pas de HTML, pas de HEAD, pas de BODY, juste des caractères. Si vous connaissez une autre méthode très simple je prends.

    La fonction AffichageRotation renvoi une Table avec des cellule dedans. Rien de bien méchant.
    Là où ça bloque c'est sur le montage de la String de retour. La page me donne ce message d'erreur :
    Impossible d'obtenir le contenu interne de , car le contenu n'est pas de type littéral.
    J'ai testé avec le InnerHTML, le InnerText en ajoutant ToString ou pas dans tous les cas et j'ai toujours le même message d'erreur.
    Mais là, je vois pas comment avoir un truc plus littéral que ça. Je veux juste récupérer la chaîne HTML qui constitue le div et la table garnie dedans.

    Si vous avez une idée, je vous remercie pour votre aide.

    Bonne journée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Si ce que tu veux c'est récupérer le code html généré par le contrôle tu dois utiliser la methode render et lui passer un stream. Ensuite tu pourras aller lire dans le stream le texte (code).
    Par contre niveau programmation c'est vraiment moche

    Citation Envoyé par zooffy Voir le message
    Bonjour à tous.

    J'ai un souci avec la transformation d'un DIV en texte.
    Je pose le code et j'explique en dessous :
    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
    27
    28
     
    <%@ WebHandler Language="VB" Class="Rotation" %>
     
    Imports System
    Imports System.Web
    Imports ProjetY.Rotation
     
    Public Class Rotation : Implements IHttpHandler
     
        Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
            context.Response.ContentType = "text/plain"
            context.Response.Write(Rotation())
        End Sub
     
        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
        Function Rotation() As String
            Dim divR As New UI.HtmlControls.HtmlGenericControl("div")
            divR.Controls.Add(AffichageRotation("17/01/2017"))
            Dim strRtour As String = divR.InnerText.ToString
            Return strRtour
        End Function
     
    End Class
    Ceci ce passe dans un fichier ASHX et je dois garder ce type de fichier car je souhaite avoir juste une chaîne de caractère en restitution, rien de plus. Donc pas de HTML, pas de HEAD, pas de BODY, juste des caractères. Si vous connaissez une autre méthode très simple je prends.

    La fonction AffichageRotation renvoi une Table avec des cellule dedans. Rien de bien méchant.
    Là où ça bloque c'est sur le montage de la String de retour. La page me donne ce message d'erreur :


    J'ai testé avec le InnerHTML, le InnerText en ajoutant ToString ou pas dans tous les cas et j'ai toujours le même message d'erreur.
    Mais là, je vois pas comment avoir un truc plus littéral que ça. Je veux juste récupérer la chaîne HTML qui constitue le div et la table garnie dedans.

    Si vous avez une idée, je vous remercie pour votre aide.

    Bonne journée.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.
    J'ai suivi ton conseil et j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Function Rotation() As String
            Dim divR As New UI.HtmlControls.HtmlGenericControl("div")
            divR.ID = "divGlobalRotation"
     
            divR.Controls.Add(AffichageRotation(maquery.QueryString("DateRotation"), maquery.QueryString("Lang")))
            Dim swRotation As New StringWriter
            Dim htwRotation As New HtmlTextWriter(swRotation)
            divR.RenderControl(htwRotation)
     
            Return htwRotation.InnerWriter.ToString
        End Function
    Je comprends pas ta phrase :
    Par contre niveau programmation c'est vraiment moche
    Sinon, ça marche bien maintenant, ça fait pile poil ce que je veux.

    Bonne journée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Et bien ca n'est pas une bonne facon de faire.

    Ou bien tu utilises des pages/contrôles (aspx,ascx) pour constuire ton html via les contrôles du framework (panel, table, textbox, ...)
    Ou bien, si c'est pour faire de l'ajax, tu renvoies du json via ton handler (ashx) et c'est du côté client (navigateur) que tu construits ton html...(c'est bien mieux au point de vue des performances et de la sécurité)

    Tu as p-e des limitations dans ton projet dont je ne suis pas au courant mais si tu sais éviter il vaut mieux.

    Tu peux mettre aussi le post comme résolu

    A+

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Désolé, j'ai zappé le Résolu.

    Je comprends toujours pas très bien tes explications sur la façon de faire. Et vu que je cherche à progresser, je suis curieux.
    JSON : je connais pas, je sais à peine ce que c'est parce que je vois ce mot un peu partout, mais c'est tout.

    La partie du projet qui concerné par mon ASHX ne rentre pas dans les deux cas que tu as formulé.

    J'ai une base de donnée qui contient des informations sur la rotation hebdomadaire de Heroes of the Storm (un jeu vidéo de chez Blizzard si tu connais). Elle est enrichie par des formulaires sur d'autres pages du site.
    Ensuite je manipule ces donnée pour les inclure dans une chaîne HTML par la function AffichageRotation() qui me colle cette chaîne complète dans un Div.
    Ensuite je veux mettre à disposition cette chaîne complète, incluant le DIV, de manière brut de manière à ce qu'un Widget sur WordPress puisse le a récupérer de manière littérale et la poster dans un article.
    Ensuite je veux que cet ASHX puisse servir à n'importe qui saura programmer un truc dans son coin et prendre l'adresse de l'ASHX avec la volée de paramètres pour l'exploiter sur son site.

    Voilà, avec cet exposé peut-être que tu comprends mieux ce que je veux faire. Et si c'est toujours mal fait, je suis ouvert à toute proposition. Mais il faut garer à l'esprit que je ne suis pas une foudre en programmation "moderne", j'ai décroché en 2008 et je m'y remets maintenant parce qu'il faut que je retrouve un taf, donc entrainement, apprentissage, ....

    En tout cas merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Je partirais plutot sur une webapi alors puisque tu ne fais que fournir à d'autres sites.

    Dans cet api 2 méthodes

    1. la premiere renvoie du json/xml/(ou autre structure) pour ceux qui voudrait programmer autour.
    2. le seconde qui renvoie le html généré et comme je disais dans mon post précédent, dans certains cas on a pas le choix de faire celà.

    Citation Envoyé par zooffy Voir le message
    Désolé, j'ai zappé le Résolu.

    Je comprends toujours pas très bien tes explications sur la façon de faire. Et vu que je cherche à progresser, je suis curieux.
    JSON : je connais pas, je sais à peine ce que c'est parce que je vois ce mot un peu partout, mais c'est tout.

    La partie du projet qui concerné par mon ASHX ne rentre pas dans les deux cas que tu as formulé.

    J'ai une base de donnée qui contient des informations sur la rotation hebdomadaire de Heroes of the Storm (un jeu vidéo de chez Blizzard si tu connais). Elle est enrichie par des formulaires sur d'autres pages du site.
    Ensuite je manipule ces donnée pour les inclure dans une chaîne HTML par la function AffichageRotation() qui me colle cette chaîne complète dans un Div.
    Ensuite je veux mettre à disposition cette chaîne complète, incluant le DIV, de manière brut de manière à ce qu'un Widget sur WordPress puisse le a récupérer de manière littérale et la poster dans un article.
    Ensuite je veux que cet ASHX puisse servir à n'importe qui saura programmer un truc dans son coin et prendre l'adresse de l'ASHX avec la volée de paramètres pour l'exploiter sur son site.

    Voilà, avec cet exposé peut-être que tu comprends mieux ce que je veux faire. Et si c'est toujours mal fait, je suis ouvert à toute proposition. Mais il faut garer à l'esprit que je ne suis pas une foudre en programmation "moderne", j'ai décroché en 2008 et je m'y remets maintenant parce qu'il faut que je retrouve un taf, donc entrainement, apprentissage, ....

    En tout cas merci pour ton aide.

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Une webapi, je sais pas comment ça marche.
    La chaîne que je retourne doit rester telle qu'elle est, je ne veux pas qu'on puisse modifier. Du coup, le XML ça marche pas et je JSON à l'air d'être pareil, mais vu que je connais pas, je ne me prononcerais pas plus avant.

    Bonne journée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Tu dis que tu veux te remettre à la page, c'est donc le bon moment pour découvrir les webapi non...
    Je vois pas en quoi ta chaine de caractère HTML n'est pas modifiable...

  9. #9
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Pour les webapi j'ai pas trouvé de tout qui part du début. Tout ce que j'ai trouvé démarre direct dans la programmation en différents langages, j'ai rien trouvé qui explique le principe,le fonctionnement.

    Pour la chaîne modifiable, bien sûr qu'on peut la modifier si on sait programmer en HTML, mais comme ma cible de "client" n'est pas censée le savoir, je me dis qu'ils y toucherons pas. Voilà ce que j'entend par non modifiable.

    Bon Lundi à toi.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

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

Discussions similaires

  1. [DOM] innerHTML, changement d'image, IE pas ok
    Par sunshine33 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 05/07/2007, 01h25
  2. Le innerHTML de Mozilla ne prend pas les contenus des champs INPUT.value
    Par Ekimasu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/05/2007, 15h56
  3. [JavaScript] [FAQ] Pourquoi mon script JS ajouté à ma page avec innerHTML ne marche-t-il pas ?
    Par FremyCompany dans le forum Contribuez
    Réponses: 6
    Dernier message: 05/03/2007, 20h44
  4. innerHTML, code HTML pas mis à jour
    Par highman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2006, 14h55
  5. maj par innerHTML -> pas de back
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/06/2006, 11h22

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