ASP.NET : Title med masterpages

Tags:    asp.net

Hejsa allesammen

Er ved at lave min side og jeg er stødt på lidt af et problem.
Jeg har en masterpage (INDEX.Master) som har header & banner, så en content place holder, og en footer.
Under den er der flere masterpages (FORSIDE.master, PROFIL.master etc.) som her vises indeni INDEX.master's content placeholder, og hver af disse nestede masterpages har en/flere contentpage(s).

Mit problem er så at jeg ønsker mig følgende titelstruktur:
MasterpageTitle : ContentpageTitle | PageTitle - PageSlogan.

FX:
FORSIDE : Velkommen | DotWest.NET - Simply if you want the Best!
CV : Erhvervserfaring | DotWest.NET - Simply if you want the Best!
PROFIL : Personlig | DotWest.NET - Simply if you want the Best!

PageTitle og PageSlogan er defineret i min resource fil, så intet problem.

Jeg kan sagtens få hvilken master-page jeg har, men kan ikke få den til at lave min title korrekt :(
Selvom jeg sætter Page.Title til fx Personlig, Erhvervserfaring etc. så kan jeg ikke få den ud :(
Har lavet følgende kode:

Fold kodeboks ind/udCSharp kode 

Fra Page_Load sætter jeg Page.Title, men den får ingen værdi efter den har gjort det?

Fold kodeboks ind/udCSharp kode 


Nogen der kan hjælpe mig?



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Hvad med at bruge Page.Header.Title i stedet for? Altså:

Fold kodeboks ind/udCSharp kode 




Brian du har reddet min røv SÅ meget!
Tusind tusind tak :D
Men hvad er det så lige præcis Page.Title sætter hvis det ikke er for headeren? Altså title tænker jeg straks er den :$



Nu har du ikke vist din masterpage, men jeg gætter på at du har glemt at definere din header med runat="server". Hvis du mangler at gøre det, bliver din title statisk (hvor runat="server" gør det til en server kontrol).

Så hvis man ikke laver det til en server kontrol, er vejen til html headeren via Page.Header. Så hvis du sætter runat="server" på, vil du kunne bruge Page.Title

Du vil kunne læse om Page klassen på msdn.microsoft.com. Tror de har en dybere forklaring, men i bund og grund er det som ovenstående.



Indlæg senest redigeret d. 02.06.2011 08:22 af Bruger #9814
Jeg troede faktisk ikke det var nødvendigt, netop fordi der er asp.net elementer der gør brug af den så troede den blev kørt på serveren-selvom den ikke havde tagget.
Men så kan jeg jo pludselig også meget bedre forstå at jeg fik et problem med at ændre den.
Men mange mange tak Brian du er sådan en livredder

Men når jeg bruger Nestede Masterpages, hvordan er det så det foregår?
Altså skal jeg "blot" sætte den til runat="server" på INDEX.master eller skal den også sættes på FORSIDE.master (nested master page) for at min Content-page den forstår at den godt må ændre title?
Det er vel kun nødvendigt på INDEX.master da FORSIDE.master får titelen med fra INDEX.master, som jo er runat="server"?



Indlæg senest redigeret d. 06.06.2011 15:27 af Bruger #16651
Fint at det virker :-) runat="server" skal sættes på alle de master sider hvor du ønsker at tilgå kontrollen fra din code behind. Så hvis du ikke ændrer title i code behind til forside.master, så skal det ikke der på.

Jeg tror dog ikke at det vælter læsset rent performance-mæssigt hvis du alligevel sætter det på alle steder.



Jeg har sat den på codebehind på INDEX.master da den via masterpages vil generere hver sides individuelle title.
Men mange tak for hjælpen det var fandme fedt :D



Indlæg senest redigeret d. 08.06.2011 20:25 af Bruger #16651
t