Avoid Resubmitting Events On Web Page Refresh
Resubmitting events during a web page refresh can be detrimental. For example, you don't want your code to make another add to the database or resubmit a credit card charge. You could redirect your user to a confirmation page when a submit button is pressed. A page refresh will only affect the confirmation page. That may not fit your scenario.
Using ASP.NET ViewState
I ran across a nice piece of code at http://stackoverflow.com/a/8010057/3817299 and repeated below that detects a page refresh using the ViewState.
Add this in your class:
#region Browser Refresh
private bool refreshState;
private bool isRefresh;
protected override void LoadViewState(object savedState)
{
object[] AllStates = (object[])savedState;
base.LoadViewState(AllStates[0]);
refreshState = bool.Parse(AllStates[1].ToString());
if (Session["ISREFRESH"] != null && Session["ISREFRESH"] != "")
isRefresh = (refreshState == (bool)Session["ISREFRESH"]);
}
protected override object SaveViewState()
{
Session["ISREFRESH"] = refreshState;
object[] AllStates = new object[3];
AllStates[0] = base.SaveViewState();
AllStates[1] = !(refreshState);
return AllStates;
}
#endregion
And in your button click do this:
protected void Button1_Click(object sender, EventArgs e)
{
if (isRefresh == false)
{
Insert Code here
}
}
Using AJAX
You can also avoid the event re-submission by using AJAX to handle your button events.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.