Laden...

Objekt an ASCX geben und wieder zurück zur ASPX?

Erstellt von math55 vor 13 Jahren Letzter Beitrag vor 13 Jahren 732 Views
math55 Themenstarter:in
314 Beiträge seit 2007
vor 13 Jahren
Objekt an ASCX geben und wieder zurück zur ASPX?

Hallo, folgender Code:


//aspx.cs
usercontrol.myObject = myObject;
//...
//ascx.cs
myObject.someProperty = "12345";
//jetzt muss myObject.someProperty in der ASPX den Wert "12345" haben

Das Property sieht im UserControl so aus:


public Type myObject 
{
	get
	{
		if (ViewState["myObject"] != null)
			return (Type) ViewState["myObject"];
		return bla; // default value
	}
	set
	{
		ViewState["myObject"] = value;
	}
}

Jetzt werden Properties dieses Objektes im ASCX verändert und müssen sich auch auf myObject in der ASPX durchschlagen. Wie stelle ich das an und ist das überhaupt ne gute Idee?

Danke 😃

458 Beiträge seit 2007
vor 13 Jahren

Du koenntest im Usercontrol einen eigenen Event definieren, diesen feuern und in der ASPX-Seite einen Eventhandler auf diesen Event reagieren lassen. Du koenntest die Properties z.B. in einem eigenen EventArgument mitgeben.

be the hammer, not the nail!

math55 Themenstarter:in
314 Beiträge seit 2007
vor 13 Jahren

Also sagen wir mal, die Veränderung passiert, wenn ich im USerControl eine DropDown verändere. Wie genau mache ich es dann?

Grüße

math55 Themenstarter:in
314 Beiträge seit 2007
vor 13 Jahren

Ich denke, ich habs 😃. Danke

math55 Themenstarter:in
314 Beiträge seit 2007
vor 13 Jahren

Nein doch nicht, in meiner OnInit Methode in der aspx.cs, ist mein UserControl noch null. Ich habs jetzt so:


//ganz oben in codebehind
protected MyControl Control;

Dann habe ich weiter unten in der OnInit, diesen Code:


//Control ist hier null ??
Control.EventMethode += new EventHandler(MethodeInASPX);

Was fehlt denn noch?

math55 Themenstarter:in
314 Beiträge seit 2007
vor 13 Jahren

Habe es gelöst!


public event EventHandler Refresh;
//...
protected virtual void OnRefresh(EventArgs e)
{
	EventHandler refreshEvent = Refresh;
	if (refreshEvent != null)
		Refresh(this, e);
}

Immer wenn ich das event starten feuern will, rufe ich einfach OnRefresh auf. Dann wird die passende Methode in der apsx gerufen.

Danke