解决刷新页面造成的数据重复提交问题
2009-09-18 14:04
886 查看
1.新建一个pagebase类,然后让页面继承pagebase,
2.新建一个页面,继承PageBase,然后面页面添加一个Label1且Text属性为0;
3.添加一个Button,然后运行页面,点击button二次,然后,再按F5刷新页面三次,
4.查看根目录下的a.txt,和b.txt
效果值为 a.txt : 1 ,2 b.txt :1,2,2,2,2 说明页面刷新时执行了b.txt
代码如下:
public class PageBase : System.Web.UI.Page
{
private string _strSessionKey;
private string _hiddenfieldName;
private string _strLastViewstate;
public PageBase()
{
_hiddenfieldName = "__LastVIEWSTATE_SessionKey";
_strSessionKey = System.Guid.NewGuid().ToString();
_strLastViewstate = string.Empty;
}
public bool IsRefreshed
{
get
{
string str1 = GetSessinContent();
_strLastViewstate = str1;
string str2 = this.Session[GetSessinKey()] as string;
bool flag1 = (str1 != null) && (str2 != null) && (str1 == str2);
return flag1;
}
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
string str = GetSessinKey();
this.Session[str] = _strLastViewstate;
this.RegisterHiddenField(_hiddenfieldName, str);
base.Render(writer);
}
private string GetSessinKey()
{
string str = this.Request.Form[_hiddenfieldName];
return (str == null) ? _strSessionKey : str;
}
private string GetSessinContent()
{
string str = this.Request.Form["__VIEWSTATE"];
if (str == null)
{
return null;
}
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}
}
页面代码:
protected void Page_Load(object sender, EventArgs e)
{
int i = int.Parse(Label1.Text) + 1;
Label1.Text = i.ToString();
if (!this.IsRefreshed)
{
WriteFile("a.txt", i.ToString());
}
WriteFile("b.txt", i.ToString());
}
private void WriteFile(string strFileName, string strContent)
{
string str = this.Server.MapPath(strFileName);
System.IO.StreamWriter sw = System.IO.File.AppendText(str);
sw.WriteLine(strContent);
sw.Flush();
sw.Close();
}
2.新建一个页面,继承PageBase,然后面页面添加一个Label1且Text属性为0;
3.添加一个Button,然后运行页面,点击button二次,然后,再按F5刷新页面三次,
4.查看根目录下的a.txt,和b.txt
效果值为 a.txt : 1 ,2 b.txt :1,2,2,2,2 说明页面刷新时执行了b.txt
代码如下:
public class PageBase : System.Web.UI.Page
{
private string _strSessionKey;
private string _hiddenfieldName;
private string _strLastViewstate;
public PageBase()
{
_hiddenfieldName = "__LastVIEWSTATE_SessionKey";
_strSessionKey = System.Guid.NewGuid().ToString();
_strLastViewstate = string.Empty;
}
public bool IsRefreshed
{
get
{
string str1 = GetSessinContent();
_strLastViewstate = str1;
string str2 = this.Session[GetSessinKey()] as string;
bool flag1 = (str1 != null) && (str2 != null) && (str1 == str2);
return flag1;
}
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
string str = GetSessinKey();
this.Session[str] = _strLastViewstate;
this.RegisterHiddenField(_hiddenfieldName, str);
base.Render(writer);
}
private string GetSessinKey()
{
string str = this.Request.Form[_hiddenfieldName];
return (str == null) ? _strSessionKey : str;
}
private string GetSessinContent()
{
string str = this.Request.Form["__VIEWSTATE"];
if (str == null)
{
return null;
}
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}
}
页面代码:
protected void Page_Load(object sender, EventArgs e)
{
int i = int.Parse(Label1.Text) + 1;
Label1.Text = i.ToString();
if (!this.IsRefreshed)
{
WriteFile("a.txt", i.ToString());
}
WriteFile("b.txt", i.ToString());
}
private void WriteFile(string strFileName, string strContent)
{
string str = this.Server.MapPath(strFileName);
System.IO.StreamWriter sw = System.IO.File.AppendText(str);
sw.WriteLine(strContent);
sw.Flush();
sw.Close();
}
相关文章推荐
- 解决刷新页面造成的数据重复提交问题
- 解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- 解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- 解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- 解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交问题
- SubmitOncePage:解决刷新页面造成的数据重复提交
- 解决浏览器刷新造成的数据重复提交问题的page扩展类。
- 解决刷新页面造成数据重复提交的方法(转载)
- easyui关于解决tab添加的页面通过href加载数据内容的页面刷新后form表单重复提交的问题;
- 解决后台提交表单数据时,重复F5刷新页面出现重复提交数据的问题。
- 页面按F5刷新重复提交表单数据的解决办法
- 用户刷新页面的重复提交数据问题及WEB-INF文件夹相关解析
- JSP刷新页面表单重复提交问题解决办法分享
- 解决 php提交表单到当前页面,刷新会重复提交 的问题