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);
 }
 }
 }