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 :

Erreur: La collection Controls ne peut pas être modifiée, car le contrôle contient des blocs de code


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut Erreur: La collection Controls ne peut pas être modifiée, car le contrôle contient des blocs de code
    Bonjour à tous,
    Voilà j'ai l'erreur suivant lorsque j'ouvre une page "Parametres.aspx" :
    Erreur du serveur dans l'application '/'.
    -----------------------------------------------------------------

    La collection Controls ne peut pas être modifiée, car le contrôle
    contient des blocs de code (c'est-à-dire <% ... %>).
    Description : Une exception non gérée s'est produite
    au moment de l'exécution de la demande Web actuelle.
    Contrôlez la trace de la pile pour plus d'informations
    sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Web.HttpException:
    La collection Controls ne peut pas être modifiée,
    car le contrôle contient des blocs de code (c'est-à-dire <% ... %>).

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution
    de la demande Web actuelle. Les informations relatives à l'origine
    et l'emplacement de l'exception peuvent être identifiées
    en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:


    [HttpException (0x80004005): La collection Controls ne peut pas être
    modifiée, car le contrôle contient des blocs de code (c'est-à-dire <% ... %>).]
    System.Web.UI.ControlCollection.Add(Control child) +8677431
    AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(Control control) +871
    AjaxControlToolkit.ScriptControlBase.OnLoad(EventArgs e) +59
    System.Web.UI.Control.LoadRecursive() +50
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
    Ma page hérite d'une page Maître qui lance depuis son pageLoad() les fonctions javascript suivantes :

    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
     
    <script type="text/javascript" language="JavaScript">
    function afficherHeure () {
        var Maintenant = new Date();
        var heures = Maintenant.getHours();
        var minutes = Maintenant.getMinutes();
        var secondes = Maintenant.getSeconds();
        heures = ((heures < 10) ? " 0" : " ") + heures;
        minutes = ((minutes < 10) ? ":0" : ":") + minutes;
        secondes = ((secondes < 10) ? ":0" : ":") + secondes;
        document.getElementById("<%=Horloge.ClientID%>").innerHTML = heures + minutes + secondes;
        setTimeout("afficherHeure()",1000);
    }
     
    function cacherMenu () {
        if (document.getElementById("<%=LabelHeaderPanelMenu.ClientID%>").innerHTML == "Menu")
            document.getElementById("<%=HiddenFieldCacherMenu.ClientID%>").innerHTML = "shown";
        else
            document.getElementById("<%=HiddenFieldCacherMenu.ClientID%>").innerHTML = "hidden";
    }
     
    </script>
    L'une de ces fonctions affiche la date et l'heure (timer), l'autre cache ou non certains menus.

    L'erreur ne survient QUE pour ma page "Paramètres.aspx".

    Si je commente le code javascript ci-dessus, ça marche.
    Mais ça marche également si je supprime tous mes contrôles Ajax de ma page Paramètres....

    J'ai d'ailleurs fait le test sur une page vierge : je suis arrivé à la conclusion que la combinaison de fonctions javascript dans ma page Maître, avec du code Ajax dans une page fille me donne cette erreur...

    En sauriez-vous un peu plus sur ce qui m'arrive ???
    Quelqu'un a-t-il obtenu la même erreur dans un cas similaire ?
    Y a-t-il une incompatibilité quelconque Javascript/Ajax ??

    Merci d'avance pour vos avis...

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Points : 581
    Points
    581
    Par défaut
    Le problème doit venir que tu utilise des <% %> dans la balise head.

    Je me rappelle plus exactement mais l'ajaxcontrotoolkit utilise le head et c'est ca qui provoque le probleme, je crois.

    Si tu fais du javascript ajoute le plutôt en code behind.

    Dans certains cas quand j'ai besoin de faire de l'evaluation dans le head je fais comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <script type="text/javascript" src="<%# Page.ResolveUrl("~/Uploadify/swfobject.js")%>" ></script>
            <script>
                var baseUrl = '<%#  Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/') + '/' %>';
    </script>
    et dans le page load de la Master page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.Header.DataBind();
    Mais bon c'est pas tres hortodoxe .
    L'Homme est doté de 2 yeux et de 2 oreilles pour voir et entendre deux fois plus qu'il ne parle

    Je ne réponds pas au questions par mp. Merci

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Salut Gyzmau,
    Merci pour ta réponse que je suis content de trouver à mon retour de vacances (au fait bonne année )
    Alors j'ai voulu appliquer ce que tu as dit et que j'ignorais : j'ai essayé de virer tous les <% %> du head, mais j'obtiens toujours le même message ;
    Alors j'ai essayé de virer ces balises de toute la page, mais c'est impossible, car c'est une page maître, et elle commence par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="PageMaitre.Master.cs" Inherits="MonPackage.PageMaitre" %>
    Du coup j'ai toujours cette erreur......... :/ help !

  4. #4
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Ajouter ton javascript dans le code behind de la MasterPage: ScriptManager.RegisterClientScriptBlock
    http://msdn.microsoft.com/fr-fr/library/bb350750.aspx

    Ca ne marche pas?
    Attention d'utiliser un "ScriptManagerProxy" pour les pages filles, le "ScriptManager" étant réservé pour ton cas à la "MasterPage" uniquement
    Le forum c'est trop génial

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Points : 119
    Points
    119
    Par défaut
    Salut,
    Eh bien comme je le disais plus tôt même si j'enlève TOUT mon javascript, j'ai la même erreur... je suis reparti d'une page vierge (qui hérite de ma page maître), et elle plante dès lors que j'y intègre le tab container ajax...... :/

    Pour le moment j'ai contourné en supprimant totalement mon code ajax, que j'ai remplacé par de l'html moins joli... mais je reste perplexe...

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2011, 18h24
  2. [JpGraph] L'image ne peut pas être affichée car elle contient des erreurs
    Par Redg9 dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 01/04/2011, 13h12
  3. Réponses: 1
    Dernier message: 04/08/2008, 17h57
  4. Erreur Excel "La mémoire ne peut pas être "read""
    Par DaBeam dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2008, 10h29
  5. Réponses: 6
    Dernier message: 03/09/2003, 10h29

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