20. marts 2006 - 15:13Der 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?
Den korte version af det, er det så bare at man i den nestede masterpage angiver den overordnede masterpage på normal vis gennem "MasterPageFile=..." ?
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
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?
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..
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..
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
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
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.