Avatar billede hedemann Nybegynder
21. december 2005 - 10:05 Der 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.
Avatar billede dr_chaos Nybegynder
21. december 2005 - 10:12 #1
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
Avatar billede snepnet Nybegynder
21. december 2005 - 10:13 #2
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.

mvh
Avatar billede snepnet Nybegynder
21. december 2005 - 10:17 #3
og du kan self og caste i vanlig stil

((SomeMaster)this.Master).SomePublicStringProp = "test";

og mht til dit scenarie:
hvis du har en knap på din master (Delete) så kunne du oprette en property

public bool AllowDelete - der mappede direkte til Enabled på din knap sådan her:

public bool AllowDelete
{
  get{return this.btnDelete.Enabled;}
  set{this.btnDelete.Enabled = value;}
}

så kan du så (enten ved cast eller ved at angive mastertypedirective) skrive sådan her i din codebehind:

this.Master.AllowDelete = false;

mvh
Avatar billede hedemann Nybegynder
21. december 2005 - 11:29 #4
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?

Jeg kender ikke til Self og Caste, hva gør de?
Avatar billede snepnet Nybegynder
21. december 2005 - 12:10 #5
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.

mvh
Avatar billede snepnet Nybegynder
21. december 2005 - 12:16 #6
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

spørg løs hvis du stadig er i tvivl om noget.

mvh
Avatar billede hedemann Nybegynder
21. december 2005 - 13:19 #7
Ups...nu gør det nok en forskel at jeg programmer i VB, det har jeg vist gelmt at nævne.
Avatar billede snepnet Nybegynder
21. december 2005 - 13:53 #8
jeg tror en property ser sådan her ud i vb:

Public Property ShowInfoButton As Boolean
      Get
            Return Me.Info.Enabled
      End Get
      Set(ByVal value As Boolean)
            Me.Info.Enabled = value
      End Set
End Property

mvh
Avatar billede snepnet Nybegynder
07. januar 2006 - 11:30 #9
hvordan går det her?
mvh
Avatar billede dr_chaos Nybegynder
04. februar 2006 - 17:06 #10
Du mangler at lukke spørgsmålet.
Avatar billede hedemann Nybegynder
06. februar 2006 - 09:04 #11
Jeps, mangler at gi' point snepnet.....
Avatar billede snepnet Nybegynder
06. februar 2006 - 20:21 #12
svar kommer her :o)
mvh
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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