Har ett forumlär, som fylls i och skickas och den nya datan visas. Men när man trycker på Uppdatera knappen i browsern så körs operationen igen med samma data och det vill jag ju inte. Så hur gör jag för att detta inte skall hända. Antar att det har något med cachen att göra.
Uppdatera problem
6 svar · 278 visningar · startad av Dino
Kör du en massa kod i pageloaden? Koppla en funktion till din uppdateraknapp som kör önskad kod bara, precis som vanligt. Utöver pageloaden så ska du ju normalt inte gå in i någon annan funktion.
Har endast denna kod i page_loaden, som hämtar data till en repeater.
Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
if not ispostback then
dim objBLayer as new guestbookBL()
repMessages.datasource = objBLayer.getData()
repMessages.databind()
end if
End Sub
och denna kod till spara knappen
Private Sub btSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSave.Click
If page.isvalid then
dim objBLayer as new guestbookBL()
with objBLayer
.name = tbName.text
.email = tbEMail.text
.url = tbURL.text
.message = tbMessage.text
end with
objBLayer.savedata()
repMessages.datasource = objBLayer.getData()
repMessages.databind()
End if
End Sub
så jag ser ingen onödig kod som orsakar problemet. Eller?
När jag säger Uppdatera knappen så menar jag den i browserns verktygsfält och inte btSave_Click i min kod.
Aha, då missuppfattade jag dig. Vad du skulle kunan prova är att sätta ett commandargument på din button som du sedan med en ifsats kan kolla mot så att det verkligen är knappen som kör funktionen:
<asp:button id="Button1" runat="server" Text="Button" CommandArgument="doStuff"></asp:button>
//sedan i funktionen
if(Button1.CommandArgument == "doStuff") {
//kod...
}
Otestat! Det är möjligt att den någonstans sparar commandargumentet också men jag tror att det ska funka´, annars kan du ju alltid nolla commandargumentet i knappen när den körs första gången.
Funkade bra, tackar. :)
Jag har stött på en väldig massa Cache-relaterade problem sedan jag började med ASP.NET.
Det har säkerligen med min okunskap att göra, men jag valde att lösa problemen på följande sätt:
Varje gång en sida ska uppdateras/laddas om så skickar jag med ett värde (i querystringen) innehållande datumstämpel, inklusive tid och sekunder. Eller ett random-nummer (rnd*1000000)exempelvis.
På så vis stämmer sidan som ska uppdateras ALDRIG med den sida som ligger sparad i cachen. Å andra sidan så kanske du fyller cachen beroende på vad du vill uppnå..
Kan vara en bra lösning då du inte orkar pula med inställningar & dylikt i IIS'en.
Bara en tanke...
Bra tips, tackar.