[英]How to stop auto button click on F5 and page refresh?
在我的ascx控件中,我有一個按鈕,我在其中調用一個事件處理程序,並從該事件處理程序調用一個在演示者中的方法
在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();
};
當我點擊btn添加其工作正常和記錄正在添加,但當我刷新瀏覽器頁面時,通過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。
請有人幫幫我..
檢查此鏈接檢測瀏覽器刷新避免在ASP.NET中觸發事件。 看這里
希望這可以幫助。
有時一個簡單的Response.Redirect
很好。 它基本上將初始POST轉換為不同的GET請求。 只要您保留所有POSTed信息,這就可以工作。 否則它們將不再可用。
protected void Button1_Click(object sender, EventArgs e)
{
// we are in Default.aspx here!
Response.Redirect("Default.aspx");
}
這並不總是有效,確實有缺點。 而且,這種方式並不太復雜。 使用Routing Framework可能會讓您獲得更順暢的URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.