23. august 2004 - 17:56Der er
23 kommentarer og 1 løsning
Samme code behind til flere aspx sider
Jeg har en aspx-side med noget info. Her er en knap(servercontrol) som kalder sin private void btnconfirmOK_Click(object sender, System.EventArgs e) funktion når den bliver klikket på. Når dette sker bliver der lavet nogle DB opslag osv. og der skal i princippet skrives en ny side ud. Problemet er bare at alt hvad der står på selve aspx siden også bliver skrevet. Altså dvs. alt det fra den foregående side skriver den jo selvfølgelig igen. Hvordan kan jeg undgå at dette sker? Hvordan kan jeg så at sige binde 2 aspx sider til samme code-behind fil? Er det muligt?, eller hvordan plejer man ellers at lave den slags løsninger ? Mvh.
side1.aspx en masse html <asp:button id=knap...runat blabla/>
side1.aspx.cs . . private void knap_Click(...) { lav noget database hent info fra DB op og vis på siden. NB! Foregående side skal slettes helt da dette ikke er relevant. Dvs. kun data fra db skal vises samt noget html snask..dvs tabeller og sådan. }
Er du med på hvad jeg mener? Måske er det smartest at bare angive det i page directive
I gode gamle asp dage kapslede man jo bare det der skulle vises på siden ind i if-sætninger, og kunne derved genbruge siden som man lystede...nok lidt noget i den retning jeg vil frem til...
ahh.... der har du flere nye muligheder. UserControls er et godt eksempel. Men... jeg synes det virker lidt som om du i koden selv udskriver den html der skal vises på siden, og at det du har brug for "bare" er, at opdatere det der er på siden med friske data eller ?
Du kan godt have flere sider som arver fra samme code behind klasse.
Så vidt jeg ved er det ganske almindelig arv.
Men jeg tror nok (jeg er faktisk ikke ASP.NET kyndig !) at jeg vil anbefale dig at lave en code behind klasse for hver side men så lade dem arve fra en fælles basis klasse. Det giver lidt ekstra fleksibilitet. Og basis klassen kan evt. være abstrakt og sub klasserne kan så levere lidt ekstra specifik information ved at implementere de abstrakte metoder.
Det eneste jeg skal lave i den dur er faktisk et simpelt databaseopdateringsvindue. Arne så vidt jeg kan se arver alle sider da allerede fra System.Web.UI.Page De kan da ikke arve fra flere...eller kan man godt det i .net?
ja oki på den måde...Måake en meget smart måde at gøre det på...Så slipper man jo nok for et par erklæringer og noget :)
snepnet, ja...du har sådan set ret. Jeg har sådan set bare lavet en række labels på aspx siden som jeg fylder med data fra codebehind(databasen). Den næste side skal sådan set bare være nogle andre labels der bliver fyldt med noget andet data.
det er nok ikke noget man sådan helt entydigt kan svare på.... hvis der er fællesnævnere mellem siderne er det en god idé med en base, men ud fra det du har skrevet er det lidt vanskeligt at se hvad de "rigtige" fællesnævnerene skulle være at vælge ud.
Hmm det er jo så bare lidt svært at kalde den anden aspx side når jeg er i min Click(...) funktion, og er kommet dertil ved at trykke på knappen på den første aspx side. Hvordan omgår jeg det problem?
jahhh men i og forsig er der ikke rigtig nogle fællesnævnere andet end at de begge hører med til at vise en bestemt funktion af siden, nemlig udfyldelse af en form og bekræftelse af at dette gik godt... Jeg synes bare det virker som lidt overkill og lave ny aspx side og ny code behind for så lidt. Koden i disse filer bliver jo minimal...
Det er....Kan du huske da vi snakkede en del om itext til opbygning af pdf-dokumenter? fdf er en anden tilgang. På denne måde behøver jeg ikke programmere layoutet. Dvs. jeg kan lave en skabelon i fx. word med en tabel konvertere denne til pdf og placere labels i adobe writeren oven på tabellen. De enekelte labels får så et navn, og jeg kan så i koden give de enkelte labels en værdi. Altså jeg kan hive en masse data op fra databasen og mappe dem til de enkelte labels i pdf dokumentet. Dette gør jeg ved at lave en fdf fil som jeg streamer ned til klienten. I fdf filen er der så en reference til pdf-skabelonen som den henter ned og placerer de enkelte data som jeg angav i koden oven på pdf dokumentet. Herved kan jeg altså lave pdf on the fly. Det er såmænd ret smart da det gør vedligeholdelse ret simpelt da der bare skal ændres i skabelonen. Problemet er bare at pdf-dokumentet bliver downloadet ret langsomt. Men jo mere jeg tænke rover det jo mere tror jeg det er pga. al det arbejde der foregår på serveren med at hente data op af DBen der tager al tiden. Det er 3 select statements hvor den ene joiner en hel del tabeller og selecter en masse tabeller, og den næste henter ca. 50 rækker ud og den sidste...Ja den kan ikke være så slem.... Desuden køres de enkelte readers til SQLerne igennem og gemmes i en hashtable. Til sidst køres denne hashtable igennem og generer fdf-filen. .....Det må næsten være den select. Jeg kan prøve at skrive den når jeg kommer på arbejde igen.... Men hvis du er interresseret i lidt mere om fdf sig endelig til.
jeps.... det kommer i dit trace : du skal sørge for at aktivere traceren i web.config. der er en tracesektion som standard hvis du bruger vs, og ellers kan du snuppe den her :
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.