2011-03-30 109 views
1

我有一個在我的C#中有單擊事件的按鈕。這很好。然而,按F5刷新頁面,我注意到按鈕事件被觸發。每次我點擊F5時都會發生這種情況。如果(page.IsPostBack)和方法仍然運行,我添加了。運行在刷新上的asp.net停止按鈕事件

當F5刷新按鈕被點擊時,有什麼辦法可以阻止這種方法被觸發嗎?

謝謝!

http://pastebin.com/9ycNraaT

+0

你能不能用按鈕聲明添加代碼? – 2011-03-30 08:47:36

+0

已被添加,請查看鏈接 – Funky 2011-03-30 08:52:56

+0

您是否試過我的解決方案? – 2011-03-30 15:04:04

回答

0

如果你有一個頁面需要運行一次,你應該在代碼中實現邏輯,防止同一個方法多次運行。在僞代碼:

if (canExecuteMethod()) { 
    executeMethod(); 
} else { 
    displayMessageThatMethodCannotBeExecuted(); 
} 

例如,您可以檢查一個會話變量與canExecuteMethod(),它返回false,如果它不存在,並設置在executeMethod()

function canExecuteMethod() { 
    return Session["methodIsExecuting"] == null 
     || Session["methodIsExecuting"] == false; 
} 

function executeMethod() { 
    Session["methodIsExecuting"] = true; 
    // ... 
} 

過程中使用的一個Session變量有它的限制,所以你可能想要考慮使用數據庫或AppSettings變量。

0

沒辦法。如果在刷新後點擊按鈕(併發布數據),則會發送相同的數據。

1

嘗試在您的添加/更新代碼後使用Response.Redirect("Your page ")。這不是很好的做法,但它會幫助你。

1

如果(!page.IsPostBack)

不若(page.IsPostBack)

+0

當按鈕被單擊並且點擊刷新時,這將不起作用,因爲回發被設置爲true。我發現這個方法非常有用,雖然在prerender上綁定 – Funky 2011-03-30 09:19:11