11. juli 2006 - 08:17Der er
24 kommentarer og 1 løsning
Bestemt sitemap-fil i en given mappe
Hej!
Jeg har et asp.net 2.0 website (C#), hvor jeg holder styr på navigationen via en sitemap-fil, og menuen, der viser dette, ligger i en masterpage-fil. I en given mappe, vil jeg dog gerne have vist en anden sitemap-fil på mit website (dvs. i masterpage-filen). Kan det lade sig gøre?
Ja - det kan det sagtens... Du kan blot konfigurere flere sitemap providers op i din konfigurationsfil. Hvis denne artikel ikke er tilstrækkelig, må du lige sige til. http://msdn2.microsoft.com/en-us/library/ms178426.aspx Mvh
Okay tak, men jeg ikke rigtig finde ud af og få erstattet min default-menu, med en der er defineret i en undermappe, hvis jeg klikker på en side fra undermappen.
Du kan angive hvilken provider du vil benytte på en sitemap datasource, så på den måde har du muligheden for at konfigurere alle de providers op du vil, og angive hvilken en af dem der skal bruges på en bestemt master. Det kan du gøre både deklerativt og progammatisk.
Hvis dine subfoldere er applikationer på IIS'en (du får en fejl, hvis subfolderen ikke er konfigureret som applikation) - kan du blot angive en anden konfiguration i konfigurationsfilen i den respektive folder - f.eks.:
Hmm... hvis jeg opretter en web.config i undermappen og indsætter ovenstående info, så brokker VS sig med flg. besked: "Det er ikke tilladt at bruge et afsnit, der er registreret som allowDefinition=..." og det er selv om, at jeg har oprettet undermappen som et program i IIS.
Har oprettet er website, med en web.config (med dit indhold), masterpage-fil, en default.aspx, en sitemap-fil (i stil med din), og en mappe med navnet 'kurser'.
I mappen er en kurser.aspx, en web.config (med dit indhold) og en sitemap-fil kurser.sitemap. Stadig samme problem.
Men lige et spørgsmål vedrørende indholdet i web.config (under kurser). Den provider man her angiver (som du i eksemplet kalder: AspNetXmlSiteMapProvider2), i hvilken fil skal den placeres? Sammen med den anden datasource i master-filen, hvor menuen også er? Eller...
Er ikke sikker på jeg helt forstår hvad du mener med hvor den skal placeres? Hvad tænker du på der? Må jeg se den præcise fejl du får - og de filer du bruger? ... Jeg har ikke noget ballade med at få det til at funge her. Mvh
Fejlen er: "Det er ikke tilladt at bruge et afsnit, der er registreret som allowDefinition='MachineToApplication', uden for programniveau. Fejlen kan være forårsaget af, at der er en virtuel mappe, der ikke er konfigureret som et program i IIS." Men websitet og mappen 'kursus' er begge oprettet som programmet i IIS. Den opstår, når jeg indsætter dit eksempel i web.config i mappen 'kursus'.
Så er det enten fordi din subfolder stadig ikke er konfigureret som en applikation, eller fordi du kører applikationen fra visual studio. (Det er i hvert fald de bedste gæt jeg har :o) Mvh
Så er det kommet til at funke. Ovenstående fejl kommer stadigvæk i VS, men nu kører det da. Hvis du smider et svar, så vil jeg med gælde give dig de 30 point. Og mange tak for din tålmodighed. :-D
Et hurtigt tillægsspørgsmål. Ved du om man er tvunget til at have en kopi af sit tema og masterfil i undermapper, hvis man kører sit website som ovenstående? Dette skaber en del kopier af samme data i undermapperne, som i roden, hvilket ikke er særlig hensigtsmæssigt.
Hmm.... Hvad ønsker du at placere i dine undersites?
Er det sådan her du vil have det:
Root Temaer Sitemap
Subs Master Sitemap
Eller?
Hvis det ikke er relevant at subfoldere er applikationer, udover at det giver en nem måde at håndtere sitemaps på, så synes jeg du skal bruge en anden løsning til det.
Så synes jeg blot du skal sætte den aktuelle sitemapprovider som en public property på din master, og så lave en baseform som vælger den rigtige provider afhængig af hvor du er i dit hierarki. Mvh
Okay, har oprettet BaseForm-klassen, der skal nedarves på alle sider. Men jeg kan ikke tilgå masterfilen fra BaseForm-klassen og rette den property, jeg har oprettet.
Tjoh ... det burde du nu nok kunne - men egentlig kan du vel sådan set bare styre det hele på mastersiden. Det eneste du skal gøre er at angive hvilket provider du vil bruge på din sitemap datasource. Mvh
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.