Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ASP.NET]Usercontrol laden vanuit class

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een probleempje en ik weet eigenlijk niet goed hoe ik het anders moet doen dan hoe ik het zou willen.

Ik heb een website met een aantal pagina's:

page1.aspx met page1.aspx.cs
page2.aspx met page2.aspx.cs
page3.aspx met page3.aspx.cs

en die erven van page_base.cs.

En een klasse..

multiplePurposeClass.cs

..waarvan de pagina's gebruik maken, voor o.a. de database handelingen.

Deze klasse wordt in de Session_Start() in de Global.asax geinstantieerd, en in Session["multiplePurposeObject"] gezet:
code:
1
2
3
4
5
Session_Start()
{
   MultiplePurposeClass o = new MultiplePurposeClass();
   Session["o"] = o;
}


Elke pagina erft van page_base een reference naar dat object 'o' uit de sessie, zodat ze allemaal dat object kunnen gebruiken.:
code:
1
2
3
4
5
Page_Load(..)
{
   this.o = (MultiplePurposeClass)Session["o"];
   ...
}



Er zijn ook een aantal usercontrols die de pagina's gebruiken.
Nu wil ik dat zo'n pagina een usercontrol kan opvragen van dat object,
en dan zo'n object kunnen plaatsen in een PlaceHolder van zichzelf:
code:
1
this.myPlaceHolderID.Controls.Add( o.getUserControl(evt. parameters) );



Probleem is alleen dat dat object wat in de sessie zit, de klasse van zo'n usercontrol niet kan vinden.
De pagina's zelf wel want die kunnen hem in een
code:
1
<%@ Register
directive declareren, maar aangezien er gegevens
voor die usercontrols uit een database moeten komen, wilde ik die code liever in mijn MultiplePurposeClass doen.

Hoe kan ik ervoor zorgen dat die klasse gewoon kan zeggen:

code:
1
myUserControl m = (myUserControl)LoadControl("myUserControl.ascx");


,net zoals mogelijk is wanneer ik dit in de code-behind file van een pagina doe ?

Want nu krijg ik dit:
[i]The type or namespace <myUserControl> could not be found (are you missing a using directive or an assembly reference?)

Uiteraard is het mogelijk om de databasehandelingen enzo als functies te maken van de page_base klasse
waar de pagina's van erven, maar dan moet na elke pageview dat object weer opnieuw aangemaakt worden, ipv dat
hij alleen maar uit de Session opgevraagd hoeft te worden...

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

Jij wil dit?
ASP.NET:
1
<%@ Reference Control ="~/myUserControl.ascx" %>


En in je class bijvoorbeeld:

[code=c#]

[ Voor 20% gewijzigd door TeeDee op 14-09-2007 16:48 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ja, maar dan vanuit een klasse binnen een cs-bestand, dus geen code-behind file (waar een .aspx, .ascx, of .master bestand aanvast zit)).

Dat ik in Page1.aspx bovenstaande kan declareren en in de codebehind die objecten dan met LoadControl kan aanmaken weet ik ook, maar wil ik niet, omdat ik dat (vanwege het databasewroeten) de taak van dat multiplePurpose object vind.

[ Voor 46% gewijzigd door Verwijderd op 14-09-2007 16:50 ]