Avatar billede bumle90 Nybegynder
23. august 2004 - 17:56 Der 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.
Avatar billede snepnet Nybegynder
23. august 2004 - 17:58 #1
du kan angive den samme code-behind fil i dit page-directive.
Avatar billede snepnet Nybegynder
23. august 2004 - 18:00 #2
men jeg er egentlig ikke helt sikker på hvad det er du har brug form :o)
kan du ikke vise lidt kode til at illustrere det med ?
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:08 #3
johhh altså

noget i retning af

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
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:11 #4
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...
Avatar billede snepnet Nybegynder
23. august 2004 - 18:18 #5
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 ?
Avatar billede arne_v Ekspert
23. august 2004 - 18:19 #6
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.
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:36 #7
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?
Avatar billede arne_v Ekspert
23. august 2004 - 18:40 #8
Nej.

Men så vidt jeg ved er det normalt:

System.Web.UI.Page
      |
din code behind klasse
      |
din aspx side

det jeg foreslår er:

System.Web.UI.Page
      |
din code behind basis klasse
      |
din specifikk code behind klasse
      |
din aspx side

Nå må snepnet rette mig hvis jeg har misforstået noget.

Jeg holder min normalt langt væk fra alt der har noget med UI at gøre.
Avatar billede snepnet Nybegynder
23. august 2004 - 18:40 #9
nøh... men du kan lave en klasse som arver fra Page, og lade dine formklasse arve fra den.
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:43 #10
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.
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:46 #11
Hvordan plejer i at gøre sådan noget?
Avatar billede snepnet Nybegynder
23. august 2004 - 18:54 #12
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.
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:55 #13
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?
Avatar billede bumle90 Nybegynder
23. august 2004 - 18:58 #14
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...
Avatar billede arne_v Ekspert
23. august 2004 - 19:34 #15
Hvis koden er tilpas lille kunne du jo gøre det på den gammeldags måde og
embedded koden i siden.
Avatar billede bumle90 Nybegynder
24. august 2004 - 18:12 #16
smid et svar :)
Avatar billede arne_v Ekspert
24. august 2004 - 18:13 #17
mig ?
Avatar billede snepnet Nybegynder
24. august 2004 - 18:15 #18
det er fint - giv dem bare til arne.
Avatar billede bumle90 Nybegynder
24. august 2004 - 19:13 #19
Forresten.  Havde nogle af jer arbejdet med fdf-formatet før?
Avatar billede snepnet Nybegynder
24. august 2004 - 19:14 #20
siger mig ikke noget - hvad er det ?
Avatar billede bumle90 Nybegynder
24. august 2004 - 19:35 #21
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.
Avatar billede snepnet Nybegynder
24. august 2004 - 19:38 #22
jo - jeg kan godt huske det.
det lyder spændende.... mht det med hvor lang tid der går med hvad, så kan du tage tid på det hvis du er i tvivl.

Se eventuelt her :
http://www.eksperten.dk/spm/529588
Avatar billede bumle90 Nybegynder
24. august 2004 - 19:43 #23
okay....det ser enormt spændende ud. Det vil jeg tage til mig.
Så kan jeg se det i trace filen ik sandt?
Også selvom siden resulterer i et pdf-doc?
Avatar billede snepnet Nybegynder
24. august 2004 - 19:50 #24
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 :

    <trace
        enabled="true"
        requestLimit="10"
        pageOutput="false"
        traceMode="SortByTime"
        localOnly="true"
    />

du kan så se tracet ved at gå til http://localhost/<ditweb>/trace.axd
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