2009-09-15 60 views
1

我正在開發一個頁面,用戶可以登錄並演示一些功能。我只想讓用戶每天演示一次。ASP.NET如何禁用刷新時重新向服務器發送請求?

一個小例子:

我有3個按鈕(與3個不同的情況)的網頁。在頁面加載時,我查找數據庫並檢查當前登錄用戶是否運行了3個可用場景中的任何一個場景(通過審計表)。根據結果​​啓用/禁用每個按鈕。如果啓用了任何按鈕,那麼他們還沒有運行該演示。通過單擊相關按鈕,演示將運行一條記錄寫入審計表,並禁用該按鈕。

這工作正常,但是,我意識到,當我刷新頁面(並確認我想重新提交信息)時,演示將再次運行。

我該如何阻止這種情況發生?我只需要允許用戶運行一次演示!

謝謝。

+0

只是想到這個......就像在代碼周圍放置一個標誌並在刷新之前設置它一樣簡單? – James 2009-09-15 23:09:00

+0

如果用戶開始查看演示,然後網絡故障意味着他看不到所有的(例如,某些圖像,腳本或樣式表沒有下載)?他/她是否可悲? – 2009-09-15 23:11:22

+0

不是高級演示,它會發送短信/電子郵件給客戶端。它只是爲了演示服務。 – James 2009-09-15 23:13:05

回答

2

我建議你改變你的表單提交使用Post/Redirect/Get pattern可避免在演示頁面刷新時重新提交。

此外,您似乎應該能夠在將記錄寫入審計表的位置更改代碼,以檢查記錄是否已存在,如果是,則返回不同的結果。儘管如此,我仍然非常謹慎。瀏覽器的「刷新」功能通常不是你應該試圖阻止的事情。如果用戶在演示過程中點擊「刷新」會發生什麼?

+0

演示沒什麼特別的,它只是發送短信/電子郵件給用戶,因此它應該立即發生。我只是不希望用戶保持刷新頁面,基本上用短信和電子郵件發送垃圾郵件! – James 2009-09-15 23:14:31

+0

是的,一定要用post/redirect/get pattern;) – womp 2009-09-15 23:27:10

+0

我會試試看!謝謝。 – James 2009-09-16 07:33:41

0

你可以檢查不僅在頁面加載啓用/禁用按鈕,但按鈕的事件,你可以驗證,如果該任務已經被執行

相關問題