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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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