2012-03-04 82 views
2

我有一個asp.net控件,它似乎觸發了頁面刷新上的按鈕單擊事件處理程序。爲什麼會發生這種情況,我怎麼能避免它?在頁面刷新時觸發按鈕單擊事件處理程序

+0

您的意思是說,您有一個帶有ASP:Button的頁面,並且您已經點擊了該按鈕一次以便頁面回傳。然後在每次點擊F5或刷新後發回「點擊」事件? – 2012-03-04 15:27:38

+0

不確定回發位,該按鈕只是執行一些邏輯,然後寫入響應流。但代碼完成後,如果我在瀏覽器中手動刷新頁面。 – dotnetdev 2012-03-04 15:29:08

回答

3

粘貼另一種方式來做到這一點,這對我的作品 -

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
      Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString()); 
    } 

    protected override void OnPreRender(EventArgs e) 
    { 
     ViewState["update"] = Session["update"]; 
    } 

    protected void btnProceed_Click(object sender, EventArgs e) 
    {   
     if (Session["update"].ToString() == ViewState["update"].ToString()) 
      DisplayInfo(); 
    } 

    private void DisplayInfo() 
    { 
     // Do what ever thing you want to do 
     Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString()); 
    } 

看到This更多細節

+1

這對我很好。只需添加base.OnPreRender(e); – scubasteve623 2015-09-09 20:47:29

0

這就是瀏覽器的工作方式。 點擊F5時,頁面刷新會導致上次調用的服務器端事件再次發生GET/POST。在這種情況下,它的按鈕點擊事件。 防止這種情況發生的一種方法是在事件邏輯之後使用Response.Redirect(「same_page」)到同一頁面。這將強制頁面重新加載,此後再進行頁面刷新不會調用按鈕單擊事件。

相關問題