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 :

Demande d'aide traduction et explication page asp


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut Demande d'aide traduction et explication page asp
    bonjour,
    Y aurait 'il une bonne ame pour m'expliquer et me traduire ce code de c# en vb
    Cela permet de désactiver la masterpage...via page?aspx?id=noframe par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class Default : CSLib.Web.UI.Page
    {
     
        protected void page_PreInit(object sender, EventArgs e)
        {
           Boolean RenderOnlyPage = false;
          Boolean.TryParse(Request.QueryString["nomaster"], out RenderOnlyPage);
           this.RenderOnlyPage = RenderOnlyPage;
           this.RenderOnlyOneContentPlaceHolder = "ContentPlaceHolder1";
        }
    }
    dans ce cas, si ma requete est default.aspx la page entiere va s'afficher (avec la masterpage) et si la requete est default.aspx?nomaster=true, la page s'affichera sans le masterpage

    et

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    using System;
     using System.Collections.Generic;
     using System.Text;
     using System.Web.UI;
     
     namespace CSLib.Web.UI
     {
     public class Page : System.Web.UI.Page
     {
     
     #region "Constructor"
     public Page()
     {
     this.Init += new EventHandler(Page_Init);
     }
     #endregion
     
     #region "Property"
     
     private Boolean renderOnlyPage = false;
     /// <summary>
     /// if true, the page would render only ContentPlaceHolder
     /// </summary>
     public Boolean RenderOnlyPage
     {
     get { return renderOnlyPage; }
     set { renderOnlyPage = value; }
     }
     
     private string renderOnlyOneContentPlaceHolder = string.Empty ;
     public string RenderOnlyOneContentPlaceHolder
     {
     get { return renderOnlyOneContentPlaceHolder; }
     set { renderOnlyOneContentPlaceHolder = value; }
     }
     
     
     #endregion
     
     /// <summary>
     /// List of ContentPlaceHolder
     /// </summary>
     private List<Control> _Control = new List<Control>();
     
     void Page_Init(object sender, EventArgs e)
     {
     if (RenderOnlyPage)
     {
     // parcours récursif sur tous les controles de la page
     CheckContentPlaceHolderRecursive(this);
     
     // suppression de tous les controles de la page
     // pour ensuite rajouter nos contentPlaceHolder
     this.Controls.Clear();
     foreach (Control c in _Control)
     this.Controls.Add(c);
     }
     }
     
     /// <summary>
     /// fonction recursive, qui fouille dans les controles de la page pour trouver
     /// un ContentPlaceHolder
     /// </summary>
     /// <param name="control"></param>
     private void CheckContentPlaceHolderRecursive(Control control)
     {
     if (control is System.Web.UI.WebControls.ContentPlaceHolder)
     {
     if (RenderOnlyOneContentPlaceHolder == string.Empty )
     _Control.Add(control);
     else if (control.ID == RenderOnlyOneContentPlaceHolder)
     _Control.Add(control);
     }
     else if (control.Controls.Count > 0)
     foreach (Control c in control.Controls)
     CheckContentPlaceHolderRecursive(c);
     }
     
     /// <summary>
     /// Cette méthode déclenche un evenement, si un control ayant besoin d'une balise form
     /// (c'est le cas des controles avec postback) est absent.
     /// En surchargeant cette méthode on passe outre cette limitation.
     /// </summary>
     /// <param name="control"></param>
     public override void VerifyRenderingInServerForm(Control control)
     {
     if (!RenderOnlyPage)
     base.VerifyRenderingInServerForm(control);
     }
     }
     }

  2. #2
    Membre chevronné Avatar de npuzin
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 265
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public partial class Default : CSLib.Web.UI.Page
    {
     
    protected void page_PreInit(object sender, EventArgs e)
    {
    Boolean RenderOnlyPage = false;
    Boolean.TryParse(Request.QueryString["nomaster"], out RenderOnlyPage);
    this.RenderOnlyPage = RenderOnlyPage;
    this.RenderOnlyOneContentPlaceHolder = "ContentPlaceHolder1";
    }
    }
    Je ne parle pas le VB désolé.

    Dans l'évenement PreInit de ta page, tu récupères dans la querystring le contenu de la variable nomaster.

    Tu affectes le résultat (true/false) à la propriété RenderOnlyPage de ta page et tu affectes "ContentPlaceHolder1" à la propriété RenderOnlyOneContentPlaceHolder de ta page.

    Le TryParse permet juste de ne pas générer d'exception si "nomaster" ne se trouve pas dans la querystring ou si la valeur n'est pas un boolean valide.

    Je laisse le soin a un autre traducteur le soin de traduire la suite

  3. #3
    Membre expérimenté Avatar de gderenne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2007
    Messages : 250
    Par défaut
    Citation Envoyé par battit64 Voir le message
    Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public partial class Default : CSLib.Web.UI.Page
    {
     
        protected void page_PreInit(object sender, EventArgs e)
        {
           Boolean RenderOnlyPage = false;
          Boolean.TryParse(Request.QueryString["nomaster"], out RenderOnlyPage);
           this.RenderOnlyPage = RenderOnlyPage;
           this.RenderOnlyOneContentPlaceHolder = "ContentPlaceHolder1";
        }
    }
    Salut,

    Je dirais pour cette partie :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Partial Class DefaultPage
        Inherits System.Web.UI.Page
     
        Protected Sub page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim RenderOnlyPage As Boolean = False
            RenderOnlyPage = CBool(Request.QueryString("nomaster"))
            Me.RenderOnlyPage = RenderOnlyPage
            Me.RenderOnlyOneContentPlaceHolder = "ContentPlaceHolder1"
        End Sub
    End Class
    Mais bon, c'est une traduction literale...

    Je tente la suite, et je post.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    La prochaine fois, merci de penser aux balises [CODE] et deuxième chose il existe des tas de traducteurs C# - VB.NET sur le net.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre expérimenté Avatar de gderenne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2007
    Messages : 250
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    La prochaine fois, merci de penser aux balises [CODE] et deuxième chose il existe des tas de traducteurs C# - VB.NET sur le net.
    Merci pour l'info, ca m'interessait également...

    J'avais traduit ce code par déduction (ne sachant pas s'il fonctionnait car je n'avais pas tout le contexte...).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    merci bcq je savais pas qu'il y avait des convertisseurs...
    merci à tous

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Class [Default]
      Inherits CSLib.Web.UI.Page
     
      Protected Sub page_PreInit(ByVal sender As Object, ByVal e As EventArgs)
        Dim RenderOnlyPage As Boolean = False
        [Boolean].TryParse(Request.QueryString("nomaster"), RenderOnlyPage)
        Me.RenderOnlyPage = RenderOnlyPage
        Me.RenderOnlyOneContentPlaceHolder = "ContentPlaceHolder1"
      End Sub
    End Class
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    Imports System
    Imports System.Collections.Generic
    Imports System.Text
    Imports System.Web.UI
    Namespace CSLib.Web.UI
      Public Class Page
        Inherits System.Web.UI.Page
     
    'Region ""Constructor""
        Public Sub New()
          AddHandler Me.Init, AddressOf Page_Init
        End Sub
    'End Region
     
    'Region ""Property""
     
        Private renderOnlyPage As Boolean = False
        ''' <summary>
        ''' if true, the page would render only ContentPlaceHolder
        ''' </summary>
        Public Property RenderOnlyPage() As Boolean
          Get
            Return renderOnlyPage
          End Get
          Set
            renderOnlyPage = value
          End Set
        End Property
     
        Private renderOnlyOneContentPlaceHolder As String = String.Empty
        Public Property RenderOnlyOneContentPlaceHolder() As String
          Get
            Return renderOnlyOneContentPlaceHolder
          End Get
          Set
            renderOnlyOneContentPlaceHolder = value
          End Set
        End Property
     
     
    'End Region
     
        ''' <summary>
        ''' List of ContentPlaceHolder
        ''' </summary>
        Private _Control As New List(Of Control)()
     
        Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
          If RenderOnlyPage Then
            ' parcours récursif sur tous les controles de la page
            CheckContentPlaceHolderRecursive(Me)
     
            ' suppression de tous les controles de la page
            ' pour ensuite rajouter nos contentPlaceHolder
            Me.Controls.Clear()
            For Each c As Control In _Control
              Me.Controls.Add(c)
            Next
          End If
        End Sub
     
        ''' <summary>
        ''' fonction recursive, qui fouille dans les controles de la page pour trouver
        ''' un ContentPlaceHolder
        ''' </summary>
        ''' <param name="control"></param>
        Private Sub CheckContentPlaceHolderRecursive(ByVal control As Control)
          If TypeOf control Is System.Web.UI.WebControls.ContentPlaceHolder Then
            If RenderOnlyOneContentPlaceHolder = String.Empty Then
              _Control.Add(control)
    ElseIf control.ID = RenderOnlyOneContentPlaceHolder Then
              _Control.Add(control)
            End If
    ElseIf control.Controls.Count > 0 Then
            For Each c As Control In control.Controls
              CheckContentPlaceHolderRecursive(c)
            Next
          End If
        End Sub
     
        ''' <summary>
        ''' Cette méthode déclenche un evenement, si un control ayant besoin d'une balise form
        ''' (c'est le cas des controles avec postback) est absent.
        ''' En surchargeant cette méthode on passe outre cette limitation.
        ''' </summary>
        ''' <param name="control"></param>
        Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
          If Not RenderOnlyPage Then
            MyBase.VerifyRenderingInServerForm(control)
          End If
        End Sub
      End Class
    End Namespace
    Si quelqu'un peut m'aider car le code me met une erreur recursive surtout à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Property RenderOnlyPage() As Boolean
          Get
            Return renderOnlyPage
          End Get
          Set
            renderOnlyPage = value
          End Set
        End Property
    en fait si quelqu'un pourrait m'expliquer comment fonctionne ce code car j'avour que je rame, je precise que mon but et via pages.aspx?nomaster=true, je supprime le masterpage et je ne garde que le placeholder de la page

    balises code ajoutées par lutecefalco, merci d'y penser la prochaine fois

  8. #8
    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
    Balise code stp =>

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    désolé

  10. #10
    Membre expérimenté Avatar de gderenne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2007
    Messages : 250
    Par défaut
    Citation Envoyé par battit64 Voir le message
    désolé
    Donc, il faut que tu Edite ton post et que tu selectionne ton script pour l'encadrer par une balise "#" comme indiqué par lutecefalco...

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Edit.Post

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    ok merci pour l'avoir fait......

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    personne peut m'aider....!

    ou est ce quelqu'un aurait une idée pour faire ça simplement, c'est à dire la possibilité d'ouvrir une page sans le masterpage en lui envoyant une variable
    merci

  13. #13
    Membre expérimenté Avatar de gderenne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2007
    Messages : 250
    Par défaut
    Je proposerais de le faire à l'ancienne (comme en ASP3...), c'est à dire, mettre des <%...%> avec conditions pour appliquer ou non la masterpage.

    Par exemple :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <%
    If Request.QueryString("masterpage") = "True" Then
      Response.Write ("@page...")
    End If
    %>
    <!-- Ici le code XHTML ASPX -->
    <%
    If Request.QueryString("masterpage") = "True" Then
      Response.Write ("<asp:content...>")
    End If
    %>
    Attention, j'ai tapé ce code en vrac sans rien vérifier... C'est uniquement pour donner l'idée principale.

  14. #14
    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 battit64 Voir le message
    Si quelqu'un peut m'aider car le code me met une erreur recursive surtout à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Property RenderOnlyPage() As Boolean
          Get
            Return renderOnlyPage
          End Get
          Set
            renderOnlyPage = value
          End Set
        End Property
    en fait si quelqu'un pourrait m'expliquer comment fonctionne ce code car j'avour que je rame, je precise que mon but et via pages.aspx?nomaster=true, je supprime le masterpage et je ne garde que le placeholder de la page

    balises code ajoutées par lutecefalco, merci d'y penser la prochaine fois

    C'est normal que ca boucle, en vb, le code n'est pas case-sensitive...

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Property RenderOnlyPage() As Boolean
          Get
            Return renderOnlyPage
          End Get
          Set
            renderOnlyPage = value
          End Set
        End Property
    Ca ne marchera po

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Property RenderOnlyPage() As Boolean
          Get
            Return _renderOnlyPage
          End Get
          Set
            _renderOnlyPage = value
          End Set
        End Property
    ca devrait marcher mieux (a condition de renommer ta variable privée renderOnlyPage en _renderOnlyPage)

    Ceci dit, ca serait peut-etre plus simple de faire dans ta masterpage une fonction genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Protected Sub SetVisible(ByVal isVisible As boolean)
     
      ' on va dire que les composants que tu veux masquer sont le menu menu1 et une div div1
    menu1.Visible = isVisible
    div1.Visible = isVisible
     
    End Sub

    Et dans les pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Public Class Page
        Inherits System.Web.UI.Page
     
      Protected Sub page_PreInit(ByVal sender As Object, ByVal e As EventArgs)
        Dim hideMaster As Boolean
        [Boolean].TryParse(Request.QueryString("nomaster"), hideMaster )
        Me.MasterPage.isVisible= !hideMaster 
      End Sub

    Je crois que par contre, tu dois ajouter a Page une directive MasterQuelqueChose, je 'nai pas de vs sous la main, je regarde ca demain si tu veux ...

    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.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Par défaut
    Citation Envoyé par pvialatte Voir le message
    C'est normal que ca boucle, en vb, le code n'est
    Par contre :
    Ceci dit, ca serait peut-etre plus simple de faire dans ta masterpage une fonction genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Protected Sub SetVisible(ByVal isVisible As boolean)
     
      ' on va dire que les composants que tu veux masquer sont le menu menu1 et une div div1
    menu1.Visible = isVisible
    div1.Visible = isVisible
     
    End Sub

    As tu eu le temps de chercher ....?



    Et dans les pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Public Class Page
        Inherits System.Web.UI.Page
     
      Protected Sub page_PreInit(ByVal sender As Object, ByVal e As EventArgs)
        Dim hideMaster As Boolean
        [Boolean].TryParse(Request.QueryString("nomaster"), hideMaster )
        Me.MasterPage.isVisible= !hideMaster 
      End Sub

    Je crois que par contre, tu dois ajouter a Page une directive MasterQuelqueChose, je 'nai pas de vs sous la main, je regarde ca demain si tu veux ...

Discussions similaires

  1. demande d'aide pour bien commencer avec asp.net
    Par aymen87 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/03/2009, 09h56
  2. Demande d'aide asp.
    Par lordm86 dans le forum ASP
    Réponses: 2
    Dernier message: 10/07/2007, 15h30
  3. Réponses: 4
    Dernier message: 05/06/2007, 12h41
  4. Aide sur l'éditeur wysiwyg dans une page ASP
    Par toussa dans le forum ASP
    Réponses: 2
    Dernier message: 03/06/2006, 08h55

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