2010-12-09 14 views
1

Est-ce possible, j'ai un code C# qui ajoute le contrôle utilisateur Web sur la page ASPX voir ci-dessous:web valeur de contrôle utilisateur mis en page ASPX

UserControl myUserControl; 
myUserControl = (UserControl)LoadControl("../TempLayouts/LayoutSize.ascx"); 
PlaceHolder1.Controls.Add(myUserControl); 

Sur mon ascx j'ai le code suivant:

private int Edit_Mode = 0; 
public int Get_EditMode 
{ 
    get { return Edit_Mode; } 
    set { Edit_Mode = value; } 
} 
protected void Page_Load(object sender, EventArgs e) 
{ if(Edit_Mode == 1)//do something} 

Comment puis-je mettre en valeur edit_mode à 1 lorsque vous appelez le contrôle dans le code utilisateur Web ci-dessus, les attributs?

Cette possible sans cette coulée?

Répondre

0

Cast à votre type de contrôle spécifique au lieu de (UserControl). De cette façon, vous pouvez définir les propriétés de votre contrôle utilisateur avant de l'ajouter à la page.

+0

Impossible de diffuser le contrôle Web car il pourrait être différent webcontrol – Chris

+0

Le "WebControl différent" aurait-il également une propriété Edit_Mode? – Marcie

2

Vous devez ajouter une référence de classe dans votre fichier ASPX, quelque chose comme ceci:

<%@ Reference Control="../TempLayouts/LayoutSize.ascx" %> 

Ensuite, dans votre fichier aspx.cs ajouter quelque chose comme ceci:

ASP.LayoutSize_ascx myUserControl; 
myUserControl = (ASP.LayoutSize_ascx)LoadControl("../TempLayouts/LayoutSize.ascx"); 
myUserControl.Edit_Mode = 1; 

Vous devez vérifier la nom de classe de votre contrôle.

+0

Pourquoi ne pas utiliser le casting? –

1
//.aspx 
Control c = Page.LoadControl("LayoutSize.ascx"); 
c.GetType().GetProperty("Get_Editor_Mode").SetValue(c, True, null); 




//.ascx 
    private bool Editor_Mode = false; 
    public bool Get_Editor_Mode 
    { 
     get { return Editor_Mode; } 
     set { Editor_Mode = value; } 
    }