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 :

[AJAX] Script Manager en premier


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    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 : 55
    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
    Par défaut [AJAX] Script Manager en premier
    Bonjour

    Je viens de faire une sorte de mise à jour de version dans mon web.config. En gros, j'ai remplacé toutes les références de System.Web.Extension de la vesion 1.0.61025.0 vers le 3.5.0.0, ceci pour obéir à une exigeance de SilverLight, donc pas le choix.

    Maintenant, mon site, dés le départ me met un message d'erreur qui me laisse perplexe sur deux points.

    Voici le message d'erreur :
    The control with ID 'acc_AccordionExtender' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.
    On en déduit facilement qu'il veut un ScriptManager en premier.

    Là où je suis perpelexe c'est que je n'ai pas trouvé de contrôle avec l'Id qu'il m'indique dans tout mon projet. J'ai cherché manuellement partout où j'avais utilisé un Accordion, rien. Et j'ai lancé une recherche de chaine sur tout le projet Actif et rien non plus.

    Mais ensuite, j'ai une deuxième perplexité : j'ai mis le Script Manager tout en haut, enfin, jugez vous même, peut être que je peut faie plus haut encore.

    J'utilise un système de MasterPage. Dans me page Default.aspx j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ Page Language="VB" AutoEventWireup="false" MasterPageFile="~/MasterPage/Default.master" CodeFile="Default.aspx.vb" Inherits="Defaulte" EnableEventValidation="false" %>
    <asp:Content ID="cHeader" runat="server" ContentPlaceHolderID="cphHeader">
            <ajax:ScriptManager ID="smGlobal" runat="server"></ajax:ScriptManager>
    </asp:Content>
    Et dans ma masterPage j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <%@ Master Language="VB" CodeFile="Default.master.vb" Inherits="MasterPage_Default" %>
    <!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 runat="server">
    <title>Site par défaut</title>
    <asp:ContentPlaceHolder ID="cphHeader" runat="server"></asp:ContentPlaceHolder>
    </head>
    Donc, à part la balise Title qui se trouve juste au dessus, ben je vois pas comment faire plus haut (et encore, j'ai essayer, ça change rien ! ).

    Pouvez-vous m'aider ?

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Il t'indique pas une page et un numéro de ligne après le msg:
    The control with ID 'acc_AccordionExtender' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.

  3. #3
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Ben non, c'est surtout pour ça que je suis trés perplexe.
    J'ai lu et relu le stack de la pile, mais je capte pas. Peut être pourras tu trouvé un détail qui m'a échappé :
    [InvalidOperationException: The control with ID 'acc_AccordionExtender' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.]
    System.Web.UI.ExtenderControl.get_ScriptManager() +120681
    System.Web.UI.ExtenderControl.RegisterWithScriptManager() +117
    System.Web.UI.ExtenderControl.OnPreRender(EventArgs e) +20
    AjaxControlToolkit.ExtenderControlBase.OnPreRender(EventArgs e) +32
    System.Web.UI.Control.PreRenderRecursiveInternal() +80
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
    Merci pour ton aide.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut
    Salut Zooffy!

    Déjà est-ce que la génération de ton projet se passe bien?

    Ensuite je suppose que tu lances l'application comme à ton habitude avant tes modifications... l'erreur peut se trouver tout bonnement sur la page que tu appelles pour lancer ton application?

    Par ailleurs ne peux-tu pas tester en mode débogage, histoire de voir précisément là où ça coince?

    Perso là je ne peux pas t'aider, je te donne juste quelques pistes...

    A plus.

  5. #5
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Donc, à part la balise Title qui se trouve juste au dessus, ben je vois pas comment faire plus haut (et encore, j'ai essayer, ça change rien ! ).

    Pouvez-vous m'aider ?
    'lut,

    bah en fait, tu peux le mettre dans ta masterpage, comme ca, il sera toujours au-dessus de ta page

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  6. #6
    Membre expérimenté
    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 : 55
    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
    Par défaut
    @Plexi86 : merci pour tes pistes, il est vrai que je n'ai pas encore pris l'habitude d'utiliser le débogage. Avant, ça marchait pas, mais maintenant c'est bon.
    Du coup, j'ai fait F5 pour voir et j'arrive direct sur l'erreur, la même. L'ennui c'est que je ne sais pas où placer un point d'arrêt pour analyser ce truc.
    J'ai l'impression qu'il plante bien avant de lancer la page.

    @pvialatte : outre le fait que ce que tu propose ne cadre pas avec l'esprit de mon système, puisque l'idée est de ne pas répéter les choses et donc d'avoir pour tous mes sites un ScriptManager, j'ai lait le test.

    Donc maintenant la MasterPage commence comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ Master Language="VB" CodeFile="GeneralMeet.master.vb" Inherits="MasterPage_GeneraleMeet" %>
     
    <!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 runat="server">
    <ajax:ScriptManager ID="smGlobal" runat="server"></ajax:ScriptManager>
        <title>Page sans titre</title>
        <asp:ContentPlaceHolder ID="cphHeader" runat="server"></asp:ContentPlaceHolder>
    Et la page Default commence comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ Page Language="VB" AutoEventWireup="false" MasterPageFile="~/MasterPage/Default.master" CodeFile="Default.aspx.vb" Inherits="Defaulte" EnableEventValidation="false" %>
    <asp:Content ID="cHeader" runat="server" ContentPlaceHolderID="cphHeader">
     
    </asp:Content>
    Et j'ai toujours la même erreur.

    Bilan : il est 9 heures du matin et je commence à m'arracher les cheveux, je déprime et j'ai presque commencé à ouvrir la bouteille de Vodka ! ! !

    Vous avez d'aures idées ?

  7. #7
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Je viens de trouver une truc qui pourrait être un début de solution, sauf que je comprends pas.

    sur le forum ASP.NET, là : http://forums.asp.net/p/1069839/1557755.aspx
    topic qui triate exactement de mon souci, c'est le même mesasge d'erreur, le gars répond ça :
    Remember the master pages is a usercontrol, so the usercontrols get render before the page they are into. So what usercontrol gets render first?
    Maintenant mon niveau d'anglais me permet de capter vaguement le contenu, mais pas dans les détails. Est ce qu'il est bien en train de dire que les UserContrôle, donc les ASCX, sont compilés avant la masterPage et la Page ?

    Parce que, si c'est ça, je suis dans une mouise de folie. Tout mon système repose sur l'utilisation d'ASCX et donc tous mes contrôle AJAX sont dans des ASCX alors que mon ScriptManager ne peux pas être positionné ailleurs que la Page Default, sinon je me retrouve avec plusisuer ScriptManager, ce qui n'est pas possible.

    Voyez vous ce que cela implique ?

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Maintenant mon niveau d'anglais me permet de capter vaguement le contenu, mais pas dans les détails. Est ce qu'il est bien en train de dire que les UserContrôle, donc les ASCX, sont compilés avant la masterPage et la Page ?
    oui...

    ok, alors tu as un plan B, qui serait de faire l'ajout du scriptmanager dans le code-behind, genre, dans tes user controls, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    protected override void OnInit(EventArgs e)
    {
        Page.Init += delegate(object sender, EventArgs e_Init){
                         if (ScriptManager.GetCurrent(Page) == null){
                             ScriptManager sMgr = new ScriptManager();
                             Page.Form.Controls.AddAt(0, sMgr);
                         }
                     };
        base.OnInit(e);
    }
    Pas teste, mais ca peut etre une soluce

    Comme ca, le premier usercontrol rendu regarde si un scriptmanager est dans la page, et si il n'y en a pas, il l'ajoute

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Ok, je vois ce que tu veux dire.

    Alors je soulève les soucis :
    - pourrais tu me faire ton bout de code en VB, le C# m'échappe encore pas mal
    - si je capte bien ton idée c'est de déporter le scriptManager dans les ASCX, je place ce bout de code à l'initilisation du Contrôle utilisateur, il teste la présence d'un ScriptManager. Si y en a un, il passe, sinon il l'ajoute
    - j'aimerais bien placer ce bout de code dans ma classe externe d'outil, histoire de pas l'avoir dans tous les contrôles, mais plutôt appeler une fonction.
    - ce que je ne comprends pas et qui me parait le plus bizarre, c'est lorsque j'étais avec la version 1.0.61025.0 du System.Web.Extensions, tout marchait bien et là que je suis passé à la version 3.5.0.0 ça marche plus. C'est vraiment là je capte plus. Et du coup, le plan B me parait relever plus du bricolage que de la solution empirique

    Mais en plus, le Plan B va me générer un paquet de boulot et j'ai trés peur des effets de bords. J'ai quand même une cinquantaine de Contrôles utilisateurs à vérifier.

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

Discussions similaires

  1. Ajax - Script Manager -> 'Sys' est indéfini
    Par crapouye dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/07/2009, 15h23
  2. script perl nombres premiers
    Par islah dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2008, 17h24
  3. AjaxControlToolKit: Erreur de Script Manager
    Par zghidi dans le forum ASP.NET
    Réponses: 13
    Dernier message: 17/01/2008, 09h56
  4. [AJAX] Script qui plante IE mais pas Firefox
    Par Booyakha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 18h40
  5. Réponses: 2
    Dernier message: 23/04/2006, 21h02

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