21. december 2005 - 10:05Der er
11 kommentarer og 1 løsning
"Kontakt" til Masterpage i Visual Web Developer 2005 exp
Hej
Er der en der kan fortælle hvordan man kontakter de objekter der er indsat på Masterpage, fra under sider. F.eks. vil jge gerne vil ha' mulighed for at tænde nogle knapper der er på Masterpage. Det sakl lige siges at det er under ASP version 2.0 og jeg benytter Visual Web Des. 2005 exp.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
jeg bruger Master.FindControl("VenstreMenu").Visible = false til at sætte en tabel invisible. Hvis du har en aspx side med en master page bruger du bare Master.FindControl("navn") til at finde kontrollen med
du kan indsætte et mastertype directive sådan her (forudsætter at din masterpage ligger i roden og hedder MasterPage.master): <%@ MasterType VirtualPath="~/MasterPage.master" %>
på den måde får du i den codebehind typestærk adgang til din master under this.Master
på din master kan du så oprette public properties/metoder for det du vil kunne.
OK...jeg er ikke en ørn til det her så vi tager lige et step adgangen.
Jeg har en masterpage, der ligger i roden og har en mappe ved navn "bruger" og i den ligger der så en side der benævnes "forside" - denne side er tilknyttet masterpage. På masterpage har jeg et par knapper af typen "Imagebuttom", f.eks. "info" og det er dem jeg gerne vil tænde og slukke for siden "forside".
Jeg har nu sat <%@ MasterType VirtualPath="~/MasterPage.master" %> ind i Forside.aspx. Men kan stadig ikke se knappen "info" på siden, og det er jo sikkert fordi den ikke er public på masterpage. Er det korrekt, og hvordan gør jeg knappen public?
hvis din masterpage hedder masterpage.master, og din knap hedder info - kan du i den codebehind fil du har til den angive en property som den her:
public bool ShowInfoButton // angiv et mere passende navn her { get{return this.info.Enabled;} set{this.info.Enabled = value;} }
på den side hvor du så vil manipulere med knappen kan du så skrive this.Master.ShowInfoButton = false; (såfremt du har har sat mastertype directive på siden)
de knapper mv du har indsat på din master - vil normalt blive vist på dine contentpages i et gråt område. hvorvidt du sætter mastertype directive eller ej gør ingen forskel på det, så umiddelbart lyder det som om din forside.aspx slet ikke er en contentpage.
prøv at send koden fra forside.aspx.cs - så kan vi lige tage en kigger.
self = selvfølgelig caste er et udtryk for at du caster fra en type til en anden (et typecast):
Button btn = new Button(); // en ny knap Control c = (Control)btn; // her typecastes btn til type Control
normalt vil din masterpage være af typen MasterPage, og den type vil ikke have de properties som du måtte have oprettet. hvis du vil have fat i de properties må du typecaste this.Master på din side til den rigtige type sådan her (hvis din masterpage hedder DefaultMaster):
DefaultMaster master = (DefaultMaster)this.Master; // typecast hvorefter du kan kalde: master.EnPropertyPåDinEgenMaster
hvis du angiver mastertypedirective - slipper du for at lave dette cast selv, og kan direkte skrive this.Master.EnPropertyPåDinEgenMaster
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.