


























习惯的解决方法是存储Session的ID和当提交时ViewState中存储的SessionID相比较来防止用户刷新屏屏幕。前提你的程序中允许了自动回发,如果不是的话,就得在hidden field存储这个变量了。下面给出一个典型的例子。在Page_Load事件中你存储了第一次提交时的SessionID和一个时间戳。
protected System.Web.UI.WebControls.Button SubmitButton;
protected System.Web.UI.WebControls.Label RefreshID;
private void Page_Load(object sender, System.EventArgs e)
{
if (RefreshID.Text.Length == 0)
{
RefreshID.Text = Session.SessionID+DateTime.Now.Ticks.ToString();
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
string sesToken = (string) Session[FrameworkConst.SYNC_CONTROL_KEYWORD]; string pageToken = RefreshID.Text;
if (sesToken != null && sesToken != pageToken)
{
Response.Write("The Refresh was performed after submit.");
}
else
{
// do your processing here to avoid Refresh trap
Response.Write("The processing is done here. Disabling submit
button so that user can not perform multiple submit.");
Response.Write("But still user can peform Refresh on page.");
}
Session[FrameworkConst.SYNC_CONTROL_KEYWORD] = Session.SessionID+DateTime.Now.Ticks.ToString();
RefreshID.Text = sesToken;
SubmitButton.Enabled = false;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。