Avatar billede decrypto Nybegynder
24. maj 2005 - 20:40 Der er 17 kommentarer og
1 løsning

To simple problemer ved submit af form.

Jeg har to problemer.

1. Når jeg udfylder en form og submitter, den står indholdet stadigvæk i felterne. Jeg har forsøgt at sætte viewstate på feltet til false, men det virkede ikke. Hvordan fjerne jeg indholdet af felterne, efter formen er submittet?

2. Formen submittes korrekt, men når jeg refresher siden bliver indholdet submittet igen og data bliver gemt i databasen igen.
Hvordan fikser jeg det, så data kun kan submittes en gang, og ikke gentage inserts af samme indtastede data igen og igen...
Avatar billede thesurfer Nybegynder
24. maj 2005 - 20:55 #1
#2: Det er en normal feature, da handlingen gentages. Løsning: send brugeren til en anden (eller samme side).. f.eks. response.redirect "side.asp". Dette kan også gøres på klientsiden, men det kan manipuleres af brugeren.

/theSurfer
Avatar billede decrypto Nybegynder
24. maj 2005 - 20:57 #2
-> theSurfer det er jeg vant til på ASP sider, men der SKAL være en mere rigtig måde at gøre det på nu når vi taler .NET herinde?
Avatar billede thesurfer Nybegynder
24. maj 2005 - 21:04 #3
#2 er (så vidt jeg ved) en browser-ting.. ikke en ASP/ASP.NET-ting.. Internet Explorer gør det.. men det gør Opera vist ikke..
Avatar billede decrypto Nybegynder
24. maj 2005 - 21:51 #4
hmmm....jeg må liiiige gå i tænkeboksen.....
Avatar billede thesurfer Nybegynder
24. maj 2005 - 21:55 #5
Vent gerne på en "second opinion".. :-)
(jeg skrev jo "så vidt jeg ved")
Avatar billede burningice Nybegynder
24. maj 2005 - 22:56 #6
men der SKAL være en mere rigtig måde at gøre det på

?!?!??! det er noget pjat at sige

det er ikke et problem med .Net men opbygningen omkring post og get og den måde så godt som alle browsere implementerer det på.
Avatar billede khs1a Nybegynder
25. maj 2005 - 07:45 #7
har du kigget på page.ispostback  ?
Avatar billede decrypto Nybegynder
25. maj 2005 - 09:28 #8
-> burningice: ?!?!??! det er noget pjat at sige

Det er det ikke.... en form i .NET er en serverkontrol <form runat="server"....>, hvor man slet behøver at skrive method="post" eller "get"....

Min serverkontrol er derfor en serverside stump kode, der overhovedet ikke har noget som helst med forskellige browsers at gør.

Jeg har kodet alm. vbscript i over 4 år, og er fuld gang med at omskole mig til .NETs måde at lave præsentationslaget på, hvilket er det der driller, og det jeg spørger efter en mere rigtig måde, at gøre det på.

Jeg har faktisk fundet en løsning på mit problem #2. Jeg skriver det ind, når jeg har fået testet det.
Avatar billede decrypto Nybegynder
25. maj 2005 - 09:31 #9
alle response objekter er kun med i .NET for at kunne hjælpe de 'gamle' asp udviklere, og for stadigvæk at give supportere asp i .Net. Det betyder derfor ikke at man skal gøre brug af de gamle og primitive asp teknikker på at løse et kendt problem....her må vi stole på microsofts .Net, og bevæge os i retningen af .Net.
Avatar billede decrypto Nybegynder
25. maj 2005 - 09:53 #10
Jeg tror mit problem #1 er blevet misforstået. Jeg er klar over at IE kan finde på at huske indtastede værdier, hvilket naturligvis er en browser "feature", men spørgsmålet gik mere ud på, hvordan man kunne vaske felter rene, efter submit af form, hvilket faktisk er løst. :o)
Avatar billede burningice Nybegynder
25. maj 2005 - 10:00 #11
prøv at kig på den renderede html... din form får en method="post" hægtet på sig. Der er altså ikke noget sort magi ved .Net og serverkontroller. De forskellige problemer med http og html er de samme som de altid har været.

Det er ikke .Net's skyld, men browseren der gen-poster data'erne. http://www.cs.tut.fi/~jkorpela/forms/methods.html

En mulig løsning, hvis du ikke vil bruge Response.Redirect, er at gemme et lille flag i viewstate. Det forhindrer ikke gen-post, men du har mulighed for at tjekke på serveren, om data'erne er gemt i databasen.

Og det er da noget vrøvl at sige at HttpResponse-klassen kun er med for bagudkompabilitet. Hvordan i alverden vil du gemme cookies til clienten? Eller indstille hvordan clienten skal cache. Eller sætte ContentEncoding for siden? Eller få fat i den stream der skrives til klienten?
Avatar billede decrypto Nybegynder
25. maj 2005 - 10:10 #12
Jeg bruger også selv response objektet til cookies, men jeg holder mig væk fra fx. redirect. Det var mere den, jeg kommenterede...(har også selv hørt en microsoft mand sige det).

Min fejl er at jeg har al min kode stående i min page_load, istedet for at smide min kode nede i fx min submit event. Der er masser af løsninger...og masser af diskussioner.
Avatar billede decrypto Nybegynder
25. maj 2005 - 10:22 #13
Jeg er træt af overcocky personer, der ser dette forum, som et sted, hvor man kan tale upænt, nedgøre og battle. Indtast deling af viden ind, kommenter ikke kommenstare. Man kan jo se at det har en negativ effekt herinde, da jeg / folk netop selv går ned på det niveau, ligsom jeg gør selv gør lige nu.

Jeg lukker og slukker her....da jeg selv har fundet løsningen på mit problem.

Paster den naturligvis ind her, så andre kan have nytte af det.
Avatar billede decrypto Nybegynder
25. maj 2005 - 10:23 #14
Svar
Avatar billede decrypto Nybegynder
25. maj 2005 - 11:14 #15
Jeg undskylder mine sure miner.....jeg trækker mine sureopstød tilbage....folk er flinke herinde....og hjælper folk i nød.....det må jeg huske.....og det skal man huske fremover....
Avatar billede thesurfer Nybegynder
20. juni 2005 - 22:58 #16
Løsningen mangler stadigvæk.. :-)

/theSurfer
Avatar billede burningice Nybegynder
27. oktober 2005 - 20:17 #17
... og stadigvæk :)
Avatar billede simm Nybegynder
23. marts 2006 - 09:02 #18
...og stadigvæk :)
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
Kurser inden for grundlæggende programmering

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