Hoi,
Ik heb een klein gastenboekje gemaakt in ASP.NET op mijn website. Het stelt niet veel voor, simpelweg een Repeater control die de naam en het berichtje onder elkaar plaatst.
Boven het gastenboek zitten een aantal input velden voor de naam, email, website en het bericht. Daar onder een knopje 'OK' om het bericht te plaatsen. Ik doe nog een check of de naam en het bericht wel ingevuld zijn, en als dat zo is sla ik het nieuwe bericht op in de database en herlaad ik de berichten in de repeater, zodat het nieuwe bericht getoond wordt.
Simpel genoeg, en het werkt ook allemaal prima.
Het probleem is nu, als je een berichtje plaatst en daarna de pagina refreshed, dan wordt hetzelfde berichtje nog eens geplaatst. Ik krijg wel (in Chrome in ieder geval) een berichtje dat er inderdaad acties herhaald kunnen worden als je refreshed, maar goed, een gemiddelde gebruiker zal dat niet lezen en gewoon op Ok klikken.
Wat kan ik doen om te zorgen dat het berichtje niet nogmaals geplaatst wordt?
Bedankt!
Ik heb een klein gastenboekje gemaakt in ASP.NET op mijn website. Het stelt niet veel voor, simpelweg een Repeater control die de naam en het berichtje onder elkaar plaatst.
Boven het gastenboek zitten een aantal input velden voor de naam, email, website en het bericht. Daar onder een knopje 'OK' om het bericht te plaatsen. Ik doe nog een check of de naam en het bericht wel ingevuld zijn, en als dat zo is sla ik het nieuwe bericht op in de database en herlaad ik de berichten in de repeater, zodat het nieuwe bericht getoond wordt.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| public partial class Gastenboek : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { lblMessage.Visible = false; this.LoadMessages(); } } private void LoadMessages() { // Laad alle berichten repeater.DataSource = GuestbookMessageManager.Instance.Load(); repeater.DataBind(); } protected void btnOK_Click(object sender, EventArgs e) { string errorMessage = null; // Check of verplichte velden zijn ingevuld if (string.IsNullOrWhiteSpace(txtName.Text)) errorMessage = "Naam mag niet leeg zijn!"; if (string.IsNullOrWhiteSpace(txtMessage.Text)) errorMessage = "Bericht mag niet leeg zijn!"; if (!string.IsNullOrWhiteSpace(errorMessage)) { lblMessage.Text = errorMessage; lblMessage.Visible = true; pnlEntry.Style["display"] = "inline"; btnExpandEntry.Style["display"] = "inline"; return; } // Zo ja, nieuw bericht maken en opslaan var msg = new GuestbookMessage(); msg.Username = txtName.Text; msg.Email = txtEmail.Text; msg.Website = txtWebsite.Text; msg.Message = txtMessage.Text; GuestbookMessageManager.Instance.Save(msg); // En weer opnieuw laden this.LoadMessages(); } } |
Simpel genoeg, en het werkt ook allemaal prima.
Het probleem is nu, als je een berichtje plaatst en daarna de pagina refreshed, dan wordt hetzelfde berichtje nog eens geplaatst. Ik krijg wel (in Chrome in ieder geval) een berichtje dat er inderdaad acties herhaald kunnen worden als je refreshed, maar goed, een gemiddelde gebruiker zal dat niet lezen en gewoon op Ok klikken.
Wat kan ik doen om te zorgen dat het berichtje niet nogmaals geplaatst wordt?
Bedankt!