Har en funktion som sparar värden från några textfält i en databas. Problemet är att en ny rad sparas igen med samma innehåll när man trycker på refresh TROTS att jag tömt innehållet i kontrollerna! Har försökt lösa det med en if-sats som kollar om textboxen är tom på själva aspx-sidan men trots att den är tom så innehåller den sitt gamla värde. Hur kan det bli så?
if (TextBox1.Text == string.empty)
return;
...spara i databasen...
TextBox1.Text = string.empty;
Har testat lite mer... se kod nedan. Innan man postar tillbaka sidan så töms innehållet så på sidan är textboxen tom. Men om man tar refresh så hittar den det tidigare innehållegt i textbox1 i alla fall! Var kommer värdet ifrån egentligen???
Näe, tror jag inte, har inte ens någon page_load-funktion. När man tar refresh så körs funktionen och innehållet i en tömd textbox finns kvar... skumt!
Ett klassiskt tankefel som grundar sig i att man inte har förståelse för hur HTTP fungerar. Beteendet du beskriver är förväntat ;)
Till att börja med: HTTP är stateless, tillståndslöst. När du postar en sida skickar du med data från klienten (webbläsaren), och servern svarar. Om du uppdaterar sidan så kommer klienten skicka om samma data igen, och servern svarar.
När du säger att du "tömmer" en kontroll så är det enda du gör är att be servern att i sitt svar skriva ut html-koden för en tom textbox istället för en textbox innehållandes vad klienten skickade. När sedan klienten väljer att uppdatera sidan så kommer den ju som sagt att skicka om samma data som den skickade förut, inte den helt nya sidan som servern skickade nyss (eftersom att det inte var det du ville, du ville ju uppdatera aktuell sida, och skicka om all gammal data.)
För att inte få det beteende du har just nu så får du göra en "fuling": gör en redirect till t.ex. dig själv efter du på servern uppdaterat informationen. På så sätt kommer klienten sedan vid en uppdatering av aktuell sida uppdatera den sida som servern skickade klienten till, vilket var sidan efter uppdateringen. Problem solved.
301 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2