我有一個在我的C#中有單擊事件的按鈕。這很好。然而,按F5刷新頁面,我注意到按鈕事件被觸發。每次我點擊F5時都會發生這種情況。如果(page.IsPostBack)和方法仍然運行,我添加了。運行在刷新上的asp.net停止按鈕事件
當F5刷新按鈕被點擊時,有什麼辦法可以阻止這種方法被觸發嗎?
謝謝!
我有一個在我的C#中有單擊事件的按鈕。這很好。然而,按F5刷新頁面,我注意到按鈕事件被觸發。每次我點擊F5時都會發生這種情況。如果(page.IsPostBack)和方法仍然運行,我添加了。運行在刷新上的asp.net停止按鈕事件
當F5刷新按鈕被點擊時,有什麼辦法可以阻止這種方法被觸發嗎?
謝謝!
如果你有一個頁面需要運行一次,你應該在代碼中實現邏輯,防止同一個方法多次運行。在僞代碼:
if (canExecuteMethod()) {
executeMethod();
} else {
displayMessageThatMethodCannotBeExecuted();
}
例如,您可以檢查一個會話變量與canExecuteMethod()
,它返回false,如果它不存在,並設置在executeMethod()
:
function canExecuteMethod() {
return Session["methodIsExecuting"] == null
|| Session["methodIsExecuting"] == false;
}
function executeMethod() {
Session["methodIsExecuting"] = true;
// ...
}
過程中使用的一個Session變量有它的限制,所以你可能想要考慮使用數據庫或AppSettings變量。
沒辦法。如果在刷新後點擊按鈕(併發布數據),則會發送相同的數據。
嘗試在您的添加/更新代碼後使用Response.Redirect("Your page ")
。這不是很好的做法,但它會幫助你。
如果(!page.IsPostBack)
不若(page.IsPostBack)
當按鈕被單擊並且點擊刷新時,這將不起作用,因爲回發被設置爲true。我發現這個方法非常有用,雖然在prerender上綁定 – Funky 2011-03-30 09:19:11
你能不能用按鈕聲明添加代碼? – 2011-03-30 08:47:36
已被添加,請查看鏈接 – Funky 2011-03-30 08:52:56
您是否試過我的解決方案? – 2011-03-30 15:04:04