Avatar billede dannv Nybegynder
12. september 2007 - 15:37 Der er 7 kommentarer

masterpage finde usercontrol

Hey,

Jeg har en masterpage, hvor jeg har tilføjet en usercontrol (=en basket/indkøbskurv..).

Fra min contentpage vil jeg nu gerne have adgang til denne kontrol, men kan ligesom ikke få adgang...

følgende gøres for at få adgang:

UserControl BasketControl = (UserControl)this.Master.FindControl("BasketControl");

Har haft trace slået til for at finde det unikke id, men det gjorde ingenforskel, hvilket id jeg indtaster...

Er der en anden måde man tilgår en usercontrol der ligger på en masterpage, fra en contentpage...??

mvh

Dann
Avatar billede neoman Novice
12. september 2007 - 15:39 #1
prøv først
UserControl BasketControl = (UserControl)this.Page.Master.FindControl("BasketControl");
Avatar billede neoman Novice
12. september 2007 - 15:49 #2
og jo, der findes en anden metode, hvor alle properties/controls/methods på mastern bliver stringly typed og kan kaldes direkte : http://msdn2.microsoft.com/en-us/library/wtxbf3hh.aspx
Avatar billede neoman Novice
12. september 2007 - 15:55 #3
dette her er faktisk et bedre link http://msdn2.microsoft.com/en-us/library/c8y19k6h(VS.80).aspx
Avatar billede nubi19 Nybegynder
20. september 2007 - 16:50 #4
FindControl kan du ligeså godt undgå, hvis du kan slippe afsted med det - så er du ude over problemer når ids ændres, etc.

Hvis du i stedet gør følgende:
1. Lav en public readonly property til din usercontrol på din masterpage's code-behind.
public basketControl
{
get {return this.BasketControl; }
}
Grunden til property'en er at designer filen automatisk laver din kontrol protected, og hvis du manuelt ændrer det skal du huske at gøre det hver gang du ændrer i masterpagen = ikke særlig sjovt.

2. I din contentpage caster du "this.Master" til den klasse din masterpage har, f.eks:
((MyMaster)this.Master)
når du har gjort det har du direkte adgang til basketcontrollen via:
((MyMaster)this.Master).basketControl; //basketControl er navnet på den property du har lavet i masterpagen.

Det er IMO en pænere løsning
Avatar billede nubi19 Nybegynder
20. september 2007 - 16:50 #5
Ups fik trykket send for hurtigt, der skulle stå til sidst:

Det er IMO en pænere løsning, end at bruge FindControl.
Avatar billede dannv Nybegynder
20. september 2007 - 18:36 #6
Ok, jeg kigger på det snarest.. nubi19.. lyder som en god løsning. Skal nok først arbejde på sagen mandag.. men vender tilbage med status asap...
Avatar billede nubi19 Nybegynder
22. september 2007 - 08:31 #7
Det haster ikke for min skyld :-)
Men ja jeg synes også det er en noget bedre løsning end findcontrol, også fordi den er nemmere at vedligeholde for en eventuel tredjepart, da sådanne noget som et ændret id straks vil blive fanget af compileren og smide en fejl ud ved property'en. Så fanges fejl inden noget sendes ud i produktion.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester