2012-02-15 156 views
3

在我的ascx控件我有一個按鈕,其中我打電話事件處理程序,並從該事件處理程序我打電話這是一個主持人如何停止自動按鈕點擊F5和頁面刷新?

ASCX頁

public event EventHandler<EventArgs> Add; 

    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     if (Add != null) 
      Add(sender, e); 

    } 

上的方法主持人

AddListView.Add += delegate(object sender, EventArgs e)//AddListView is a Interface 
    { 
    Add(); 

    }; 

當我在btnAdd單擊其做工精細,並記錄獲取添加,但是當我刷新瀏覽器頁面,按F5並再次點擊鼠標btnAdd越來越火。我試圖用

// Page refresh F5 btn press 
    protected override void LoadViewState(object savedState) 
    { 
     object[] AllStates = (object[])savedState; 
     base.LoadViewState(AllStates[0]); 
     _refreshState = bool.Parse(AllStates[1].ToString()); 
     _isRefresh = _refreshState == bool.Parse(Session["__ISREFRESH"].ToString()); 
    } 

    // Page refresh F5 btn press 
    protected override object SaveViewState() 
    { 
     Session["__ISREFRESH"] = _refreshState; 
     object[] AllStates = new object[2]; 
     AllStates[0] = base.SaveViewState(); 
     AllStates[1] = !(_refreshState); 
     return AllStates; 
    } 

那麼它工作正常,但在刷新後,我無法再次點擊btnAdd,對於點擊btnAdd,我再次做刷新那麼它的做工精細..

我在其他控件上調用此控件,並且我有一個Datalist在點擊項目頁面時會再次回發。

如何停止自動按鈕點擊F5或頁面刷新,而無需點擊btnAdd。

請別人幫我..

+0

我認爲在插入記錄後最好重定向到同一頁面並避免所有這些。 – Aristos 2012-02-15 13:12:44

回答

1

檢查此鏈接檢測瀏覽器刷新避免在ASP.NET中觸發事件。 see here

希望這會有所幫助。

+0

謝謝你的好例子.. – Rocky 2012-02-16 04:43:53

+0

但沒有完全解決我的問題,我在datalist中添加項目,當我點擊datalist項目時,回傳呼叫問題即將到來.. – Rocky 2012-02-16 05:29:45

0

有時一個簡單的Response.Redirect是好的。它基本上將初始POST變成另一個GET請求。只要你堅持所有張貼的信息,這就行得通了。否則,他們將不再可用,顯然。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // we are in Default.aspx here! 
    Response.Redirect("Default.aspx"); 
} 

這並不總是奏效,確實有缺點。而且,這種方式並不太複雜。使用路由框架可能會讓您獲得更流暢的URL。

+0

任何人都可以halp我... – Rocky 2012-02-17 05:45:44

相關問題