webForumDet fria alternativet

Uppdatera problem

6 svar · 278 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

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.

NETworkMedlem sedan juni 20011 732 inlägg
#2

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.

DinoMedlem sedan sep. 20011 914 inlägg
#3

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.

NETworkMedlem sedan juni 20011 732 inlägg
#4

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.

DinoMedlem sedan sep. 20011 914 inlägg
#5

Funkade bra, tackar. :)

xrobxMedlem sedan mars 2003106 inlägg
#6

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...

DinoMedlem sedan sep. 20011 914 inlägg
#7

Bra tips, tackar.

135 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)