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 :

LoadPostData et MasterPage


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Par défaut LoadPostData et MasterPage
    Bonjour

    J'ai un controle web défini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class MaClasse : System.Web.UI.Control, System.Web.UI.IPostBackDataHandler {
    ...
        public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection values)  {
    ...
        }
    }
    Ce controle marche très bien, la méthode LoadPostData est bien appelée... nikel ...

    SAUF si on utilise une MasterPage... Alors dans ce cas cette méthode n'est plus appelée

    Pourquoi ?

    J'ai trouvé plusieurs questions similaies dans d'autres forums, mais sans réponse

    Suis-je condamné à ne pas utiliser de master pages ?
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu as bien enregistré ton composant avec RegisterRequiresPostBack ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Par défaut
    J'ai enfin trouvé la réponse.

    L'enregistrement du controle avec la méthode suggérée est inutile : En fait lors de la création des champs HTML correspondant au controle et l'affectation de leurs propriétés Name, il faut utiliser la propriété C# UniqueID et non pas ID (Ce qui n'est à ma connaissance jamais mentionné dans la doc et les exemples de controles).

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    protected override void Render(System.Web.UI.HtmlTextWriter output) {
      output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Type, "text");
      output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Name, this.UniqueID);
      output.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Input);
      output.RenderEndTag();
    }
    Tant que l'on utilise pas de masterpage les deux sont identiques, c'est pourquoi cela fonctionne. Mais avec une master page ID et UniqueID ne correspondent plus.

    Or, la méthode LoadPostData n'est appelée que si dans le PostBack il y a un champ dont la propriété Name est égale à la propriété UniqueID du controle

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

Discussions similaires

  1. Javascript et masterpage
    Par joKED dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/11/2006, 21h34
  2. [MasterPage] Reconnaissance de Form
    Par Kylen dans le forum ASP.NET
    Réponses: 8
    Dernier message: 04/07/2006, 15h33
  3. [ASP.NET|C#] Menu variable MasterPage
    Par dumser1 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 03/04/2006, 13h59
  4. Réponses: 13
    Dernier message: 08/02/2006, 09h03
  5. [VB.Net][2.0] Menu et MasterPage
    Par Cyrilange dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/12/2005, 12h23

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