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 :

[VB.NET] Comment modifier le head et le body d'une page aspx


Sujet :

ASP.NET

  1. #1
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut [VB.NET] Comment modifier le head et le body d'une page aspx
    Salut,
    Je souhaite modifier le <HEAD> de ma page pour y mettre du javascript.
    Je suis allé voir la FAQ et ai tenté d'adapter le code.Comment modifier le head et le body d'une page aspx?
    Je reçois l'erreur suivante:
    Cannot get inner content of myHeader because the contents are not literal
    De plus, on dirait qu'il a du mal à conserver l'attribut "runat=server".

    Qqn a-t-il une solution?

    Merci
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Salut Immobilis
    si tu catch quelle est la ligne de code qui lève l'exception :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut neguib,

    Celle ci:
    header.InnerHtml = header.InnerHtml + "<script language=""javascript"">function myfct{alert('Hello');}</script>"
    Merci
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    ok et pourquoi tu n'utilises pas plutôt le InnerHtml :
    Edit: ok tu as modifié je viens de le voir bon je regardes de mon côté et je te dis quoi
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Alors j'ai fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
       InitializeComponent()
       Me.head = CType(FindControl("head"), HtmlGenericControl)
       Me.head.InnerHtml += "<script language=""javascript"">function fctjavascript{alert('Hello');}</script>"
       Me.body = CType(FindControl("body"), HtmlGenericControl)
       Me.body.Attributes("onclick") = "fctjavascript()"
    End Sub
    Donc après execution, j'ai verifier le code de la page et tout à bien été ajouté. Cela est donc reglé apparemment avec le transtypage si tu confirme, je verrais à revoir l'article de la Faq ok
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Dans mon web form, je déclare:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <HEAD id="myHeader" runat=server>
    dans le code behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Protected myHeader As HtmlGenericControl
    Puis,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: This method call is required by the Web Form Designer
            'Do not modify it using the code editor.
            InitializeComponent()
            Try
                Me.myHeader = CType(FindControl("myHeader"), HtmlGenericControl)
                Me.myHeader.InnerHtml += "<script language=""javascript"">function fctjavascript{alert('Hello');}</script>"
     
            Catch ex As Exception
                Response.Write(ex.Message)
     
            End Try
     
        End Sub
    Mais, j'ai tjrs la mm erreur.
    Dans la mesure où "myHeader est déclaré comme "HtmlGenericControl" est-il utile de le convertir?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Immobilis
    Dans la mesure où "myHeader est déclaré comme "HtmlGenericControl" est-il utile de le convertir?
    A+
    ce n'est pas header qui est transtyper mais bien le resultat de la fonction FindControl qui elle renvoit un Web.UI.Control
    Mais le code peut être dans le Page_Load chez moi çà fonctionne toujours
    Mon seul souci effectivement c'est de garder le runat=server dans le Head
    Apparemment j'y arrive en fermant le designer avant generation quelconque
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  8. #8
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Il y a des post sur le net à propos, voici deux liens.

    http://www.c-sharpcorner.com/Code/20...SP.NETForm.asp

    http://www.dotnet247.com/247referenc...27/135691.aspx

    Ce dernier fait référence à l'attribut runat=3D"server". Cela te dit-il qqch?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Immobilis
    Il y a des post sur le net à propos, voici deux liens.

    http://www.c-sharpcorner.com/Code/20...SP.NETForm.asp

    http://www.dotnet247.com/247referenc...27/135691.aspx

    Ce dernier fait référence à l'attribut runat=3D"server". Cela te dit-il qqch?

    A+
    : désolé, faudrait qu'une pointure vienne à notre rescousse
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    C'est qui la cavalerie?

    En tous les cas, chez moi, ça change pas.
    Il detecte 6 autres objets dans le controle <HEAD>:
    1 <TITLE>
    4 <META>
    1 <LINK>
    Cela pourrait-il être le pb?

    Je viens de mp Neo51 qui est l'auteur de la FAQ.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Je sais pas je te mets tout ce que j'ai fait et qui fonctionne à toi de voir
    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
     
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="TestInnerHtml.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//FR">
    <html>
     <head id="head" runat="server">
      <title>WebForm1</title>
      <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
      <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
     </head>
     <body id="body" runat="server" ms_positioning="GridLayout">
      <form id="Form1" method="post" runat="server">
      </form>
     </body>
    </html>
    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
     
    Public Class WebForm1
     Inherits System.Web.UI.Page
     <System.Diagnostics.DebuggerStepThrough()> _
     Private Sub InitializeComponent()
     End Sub
     Protected WithEvents body As HtmlGenericControl
     Protected WithEvents head As HtmlGenericControl
     Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
      InitializeComponent()
     End Sub
     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Try
        Me.head = CType(Me.FindControl("head"), HtmlGenericControl)
        Me.head.InnerHtml += "<script language=""javascript"">function fctjavascript{alert('Hello');}</script>"
        Me.body = CType(Me.FindControl("body"), HtmlGenericControl)
        Me.body.Attributes("onclick") = "fctjavascript()"
        Response.Write("çà marche!")
      Catch ex As Exception
        Response.Write(ex.Message)
      End Try
     End Sub
    End Class
    resultat
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//FR">
    <html>
     <head id="head">
      <title>WebForm1</title>
      <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
      <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      <script language="javascript">function fctjavascript{alert('Hello');}</script></head>
     <body id="body" ms_positioning="GridLayout" onclick="fctjavascript()">
       <form name="Form1" method="post" action="WebForm1.aspx" id="Form1">
    <input type="hidden" name="__VIEWSTATE" value="blablabla ...=" />
       </form>
     </body>
    </html>
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Nouveau membre du Club Avatar de Gigottine
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Salut,
    Je ne sais pas si ca peut changer quelque chose mais moi pour retrouver le control j 'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head = Page.FindControl("head")
    à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head= ctype(me.FindControl("head"), HtmlGenericControl)
    Et je suis comme vous le runat = "server" disparait comme par magie lors de la compilation de temps en temps

  13. #13
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    J'ai copié collé ton code et ça marche pas... Sauf pour le body.

    Va falloir trouver autre chose. La disparition du runat est peut-être symptomatique.

    A+

    PS : J'utilise le Framework 2.0. Il existe apparement un controle System.Web.UI.HtmlControls.HtmlHead mais VS2003 ne le reconnait pas.
    "Winter is coming" (ma nouvelle page d'accueil)

  14. #14
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    Citation Envoyé par Immobilis
    PS : J'utilise le Framework 2.0. Il existe apparement un controle System.Web.UI.HtmlControls.HtmlHead mais VS2003 ne le reconnait pas.
    tu ne peux pas utiliser le framework .NET 2.0 sous Visual Studio 2003.

    La solution de la FAQ a été testé avec VS.NET 2003 et le framework .NET 1.1.

  15. #15
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Bon,

    Je suis passé sous le Framework 1.1 et ça marche. Excellente compatibilité descendante

    Citation Envoyé par neo.51
    tu ne peux pas utiliser le framework .NET 2.0 sous Visual Studio 2003.
    Insaller le Framework 2.0 ne sert à rien alors?
    Cela ne permet-il pas d'utiliser des composant du FW mis à jour?

    Ou alors il faut se procurer obligatoirement VS2005... BIIIILLL

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Points : 99
    Points
    99
    Par défaut
    Je sais que le post date un peu mais au cas ou d'autres aient le même problème,
    vu que j'ai eu la même erreur même en suivant les indications de la faq et de ce post, voila comment j'arrive à faire (.NET 2.0 avec VS2005):

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    protected HtmlHead head;
    ...
    head = (HtmlHead)Page.FindControl("head");
    HtmlLink link = new HtmlLink();
    link.Attributes.Add("rel", "stylesheet");
    link.Attributes.Add("type", "text/css");
    link.Attributes.Add("href", "../style/monStyle.css");
    head.Controls.Add(link);

    et ça marche nickel

    (c'est du C# par contre)

    ça serait cool de le rajouter dans la faq si ça aide

  17. #17
    CUCARACHA
    Invité(e)
    Par défaut Utilise une variable publique comme en asp3 ça fait des miracles :)
    Salut

    ça ça marche pas mal...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title><%=strTitre%></title>
    Il te suffit de déclarer la chaine strTitle en public dans la classe de la page...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public strTitle as string
     
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    strTitle = "Mon titre"
        End Sub
    Ca marche en VB et en C# en version 1.1 et 2.0

    ++

    Laurent

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/10/2009, 13h05
  2. [VB.NET]Comment modifier un textbox a partir d'une dll?
    Par Subkill dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 21/01/2008, 21h38
  3. Réponses: 2
    Dernier message: 26/09/2006, 08h56
  4. [VB.Net] Comment modifier le CurrentDirectory ?
    Par Lofwyr^ dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/05/2006, 18h52
  5. Réponses: 9
    Dernier message: 05/01/2006, 14h01

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