17. maj 2008 - 15:13Der er
9 kommentarer og 1 løsning
Hvordan gør DotNetNuke dét?
I DotNetNuke (et OpenSource CMS) kan man uploade nye aspx filer til systemet, hvorefter man kan anvende disse som skabeloner til nye sider.
Er der nogen der har en idé om hvordan man fortolker en ellers ukendt ny aspx fil, i sådan en løsning?
Jeg vil selv gerne eksperimentere med at lave et CMS og syntes det er en fed feature, at man selv kan oprette nye skabeloner. Jeg kan fint gøre det med en html side, men vil jo hellere have en aspx som giver flere muligheder.
Så: Hvordan fletter man f.eks en eksisterende masterpage sammen med en ny og ukendt aspx? Og hvordan kan jeg sikre mig, at evt. eksisterende URL'er kommer til at bruge den nye aspx istedet?
Ja jeg ved at man kan skifte MasterPage. Det i sig selv er ikke noget problem. Men spørgsmålet er, hvordan jeg kan skifte selve aspx filen ud - på runtime... Ikke MasterPagen.
og hvis du blot vil kunne tilføje en aspx side som skal flettes sammen med en MasterPage, så skal du jo bare lave en content page. dvs, så det her kommer til at stå øverst <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Din Side" %>
og så skal MasterPage.master naturligvis rettes til det filnavn du bruger..
thomas_yde: håber ikke jeg lød negativ, det vare bare så der ikke er nogen som prøver med page_load..
og til de interesserede som der måtte være, så kan jeg lige tilføje at pre_init() ikke kan benyttes i en masterpage fil, men skal bruges i content_pages (som er meget meget kode) eller i en global.asax
Tak for kommentarerne. Jeg er helt med på hvad I siger - det er heller ikke det spørgsmålet går på...
Forestil Jer (som det er tilfældet i DotNetNuke), at jeg opretter et stykke tekst som vises via default.aspx. Default.aspx sidens udseende af valgt mellem en række skabeloner som ALLE er aspx sider (ikke ascx).
I DotNetNuke får min tekst f.eks URL'en www....dk/default.aspx?ID=1
Hvis jeg nu gerne vil ændre layoutet på default.aspx, kan jeg vælge mellem en af de andre aspx filer der er lagt på løsningen - de kunne f.eks hedde Green.aspx, Blut.aspx eller noget helt andet.
Vælger jeg f.eks Green.aspx som skabelon til min tekst, vil jeg stadig kunne få fat i min tekst via den tidligere default.aspx?ID=1 - og ikke green.aspx?ID=1
Spørgsmålet er derfor : Hvordan kan jeg angive, at default.aspx nu indeholder nogle andre felter + noget nyt html - og at disse iøvrigt ligger i green.aspx? Er det via en server.execute eller hvad?
Hvis du downloader DNN starter-projektet og eksperimenterer med at lave DNN-moduler, får du en god forståelse af opbygningen. Det bruger dynamisk load af usercontrols og asp.net's just-in-time compilering. DNN kan også bruge pre-compilerede controls (PA'er). Modulerne kobles på siderne vha. en standard for navngivning af de forskellige PANE's på en side i et skin. Tilknytningerne gemmes i databasen, sammen med modulets særlige data, som f.eks HTML'en i et Test/HTML-modul.
Derudover er der også en teknik, som de kalder SkinObjects, som dynamisk erstatter Tokens i markup'en på en side, med usercontrols. Sådan er menuen, logoet og "Register/Login"-kontrollen bl.a. sat på.
Der er en del mere i det, men altsammen gør brug af dynamisk loadede controls.
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.