2010-12-09 12 views
1

Ist dies möglich, ich einige C# -Code, die Web-Benutzer-Steuerelement auf aspx Seite fügt unten:Webbenutzersteuerelement Wert in aspx Seite

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

Auf meinem ascx ich habe den folgenden Code:

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} 

Wie kann ich den Edit_Mode-Wert auf 1 setzen, wenn ich das Web-Benutzersteuerelement im obigen Code, Attribute, aufruft?

Dies ist ohne Gießen möglich?

Antwort

0

Umwandeln in Ihren spezifischen Steuerungstyp anstelle von (UserControl). Auf diese Weise können Sie die Eigenschaften Ihres Benutzersteuerelements festlegen, bevor Sie es der Seite hinzufügen.

+0

Kann die webcontrol nicht werfen, wie es – Chris

+0

das „verschiedene webcontrol“ auch eine EDIT_MODE Eigenschaft hätte anders webcontrol sein könnte? – Marcie

2

Sie benötigen einen Klassenverweis in der aspx-Datei hinzufügen, etwa so:

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

Dann in Ihrer aspx.cs Datei so etwas wie hinzufügen:

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

Sie die Notwendigkeit prüfen Klassenname Ihres Steuerelements

+0

Warum möchten Sie nicht Casting verwenden? –

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