如何停止自动按钮点击F5和页面刷新?
问题描述:
在我的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。
请别人帮我..
答
有时一个简单的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
我认为在插入记录后最好重定向到同一页面并避免所有这些。 – Aristos 2012-02-15 13:12:44