Avatar billede cogitans Nybegynder
20. marts 2006 - 15:13 Der er 15 kommentarer og
1 løsning

Masterpages i masterpages

Jeg har lavet et system, hvor man kan logge ind. Problemet er så, at login-delen benytter én masterpage, mens alle de reterende sider benytter en anden masterpage. Er det muligt, at den "anden" materpage vises inde i content-delen af den første masterpage?
Avatar billede cogitans Nybegynder
20. marts 2006 - 15:13 #1
...i så fald vil jeg selvfølgelig gerne se et kodeeksempel på det :-)
Avatar billede dr_chaos Nybegynder
20. marts 2006 - 15:19 #2
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 15:19 #3
Her er en der fortæller lidt om det, endda med eksempler ;-)
http://www.exforsys.com/content/view/1628/354/
Avatar billede cogitans Nybegynder
20. marts 2006 - 15:40 #4
Den korte version af det, er det så bare at man i den nestede masterpage angiver den overordnede masterpage på normal vis gennem "MasterPageFile=..." ?
Avatar billede dj_uncas Nybegynder
20. marts 2006 - 15:51 #5
Jep, det kan du gøre, og så er det vel bare ellers at lege lidt med det...
Avatar billede dr_chaos Nybegynder
20. marts 2006 - 17:13 #6
Du skal også bare huske at angive den rette contentplaceholder
Avatar billede cogitans Nybegynder
23. marts 2006 - 15:32 #7
Nu har jeg prøvet at følge eksemplerne, og implementere 2nd masterpages vha. f.eks.: MasterPageFile="~/Login/DefaultMasterPage2.master"
Denne linie har jeg så skrevet i den masterpagefil, som brugeren skal redirectes hen til, når han har foretaget et vellykket login. Men når siden testes af, så kommer fejlen:

Serverfejl i programmet '/projektNavn'.
--------------------------------------------------------------------------------

Indholdskontrolelementer skal være kontrolelementer på en indholdsside eller en indlejret masterside, der refererer til en masterside.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Web.HttpException: Indholdskontrolelementer skal være kontrolelementer på en indholdsside eller en indlejret masterside, der refererer til en masterside.

Kildefejl:

Der blev oprettet en undtagelse, der ikke blev behandlet,  under kørsel af den aktuelle webanmodning. Du kan finde oplysninger om undtagelsens oprindelse og placering ved hjælp af nedenstående staksporing af undtagelser. 

Staksporing:


[HttpException (0x80004005): Indholdskontrolelementer skal være kontrolelementer på en indholdsside eller en indlejret masterside, der refererer til en masterside.]
  System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection) +534
  System.Web.UI.MasterPage.get_Master() +36
  System.Web.UI.MasterPage.ApplyMasterRecursive(MasterPage master, IList appliedMasterFilePaths) +24
  System.Web.UI.Page.ApplyMasterPage() +124
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1362

Hvad betyder denne fejl, og hvordan rettes den?
Avatar billede cogitans Nybegynder
24. marts 2006 - 13:59 #8
Jeg er ved at sammenligne koden fra eksemplet i 20/03-2006 15:19:48 med min egen kode. Og den første forskel, jeg kan se, er, at i min egen globale masterpagekode er følgende linie i:
Inherits="MasterPage"
Denne linie findes ikke i den globale masterpagekode for eksemplet. Kan denne linie have noget med fejlen at gøre? Og hvad gør denne kommando egentlig?
Avatar billede dj_uncas Nybegynder
24. marts 2006 - 14:29 #9
Den fortæller hvilken klasse din MasterPage skal nedarve fra. Det er ikke så godt at kalde din egen klasse MastePage, da det navn allerede er taget af frameworket..
Avatar billede cogitans Nybegynder
24. marts 2006 - 15:04 #10
Så er dette altså et af problemmerne. Min masterside hedder hemlig "DefaultMaterPage2"...
Avatar billede dj_uncas Nybegynder
24. marts 2006 - 15:07 #11
I Codefile til DefaultMasterPage2, hvad står der så som klasse?
(public partial class XXX : System.Web.UI.MasterPage)

Inherits="" og class skal passe sammen.. Runtime bliver de to vist kompileret sammen til en samlet klasse, og hvis de ikke kan finde hinanden bliver der kaos..
Avatar billede dr_chaos Nybegynder
24. marts 2006 - 15:31 #12
hvilken en fil der er codebehind.
Dvs den class som masterpagen er en del af.
Avatar billede cogitans Nybegynder
24. marts 2006 - 15:56 #13
15:07:52
I codebehind står der "MasterPage". Det forklarer jo hvorfor der står "inherits='MasterPage'" inde i html'en. Men det giver da også nogle problemer, når siden skal finde sin codebehind, da de ikke hedder det samme?

Masterpagen hedder:
DefaultMasterPage2.master
hvori der bl.a. står:
CodeFile="DefaultMasterPage2.master.cs" Debug="true" Inherits="MasterPage"
Codebehind hedder=MasterPage

2. masterpage hedder:
DefaultMasterPage.master
Hvori der bl.a. står:
CodeFile="DefaultMasterPage.master.cs" Debug="true" Inherits="MasterPage"
og codebehinden hedder:
MasterPage
Avatar billede dj_uncas Nybegynder
24. marts 2006 - 16:00 #14
DefaultMasterPage2.master skal have følgende:
CodeFile="DefaultMasterPage2.master.cs" Inherits="DefaultMasterPage2"
.. og dens codefile skal have class DefaultMasterPage2 : System.Web.UI.MasterPage

DefaultMasterPage.master skal have følgende:
CodeFile="DefaultMasterPage.master.cs" Inherits="DefaultMasterPage"
.. og dens codefile skal have class DefaultMasterPage : System.Web.UI.MasterPage

Så burde det vist virke..
Avatar billede cogitans Nybegynder
19. august 2006 - 17:53 #15
Vil dj_uncas lige lægge et svar?
Avatar billede dj_uncas Nybegynder
20. august 2006 - 14:31 #16
Yes sir...
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