求ASP.Net C# 防止刷新自动触发事件的解决方案

yinzai126 2009-03-27 10:01:44
我在写一个发帖功能,出了一个刷新自动触发发贴事件的问题。
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="发帖" OnClick="Button1_Click" />
即当第一次按Button1时,提交了发贴内容,然后用户再点刷新按钮时,又重复提交了一次帖子。
如何让用户点刷新按钮时不重复提交。
思路可以是点刷新按钮时不让Button1_Click再次触发。也可以是点刷新按钮时把TextBox1的内容清除掉(我在Button1_Click事件的最后写了清除TextBox1的代码,看到页面上是清除了TextBox1的内容,但调试时发现TextBox1的内容并没有被清掉,即Button1_Click事件的最后写的清除TextBox1的代码并没有真正把内容清除)。
我目前想到的两种思路都没有实现,希望这里有高手能有方案。
当然如果有这两种思路外的方案也行,重点是解决问题。
...全文
540 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
若当前地址为http://www.test.com/testweb/default.aspx ,则可以通过下列方法获得不同的地址


Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.PathInfo:
Request.PhysicalApplicationPath: E:\WWW\testweb\
Request.PhysicalPath: E:\WWW\testweb\default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUri: http://www.test.com/testweb/default.aspx
Request.Url.Host: www.test.com
Request.Url.LocalPath: /testweb/default.aspx
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
Response.Redirect("Request.Url.AbsoluteUri.ToString()");
好像是没有双引号
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
这个简单,可以取你当前所在的网址,使用
Request.Url.AbsoluteUri.ToString();
如你当前的网址为http://www.test.com/testweb/default.aspx?id=101


Page.RegisterStartupScript("startup", "<script language='javascript'>alert('提交成功!');</script>");
Response.Redirect("Request.Url.AbsoluteUri.ToString()");


yinzai126 2009-03-27
  • 打赏
  • 举报
回复
没人有清除TextBox1内容那种思路的方案吗,当然这种思路我试过很多次,是不容易的实现的,甚至不可能实现
yinzai126 2009-03-27
  • 打赏
  • 举报
回复
QueryString传进来的参数
yinzai126 2009-03-27
  • 打赏
  • 举报
回复
yangqidong 方法不方便,原因也是页面有参数,再跳回来传值比较困难,能把TextBox1的内容清空吗,即第二条思路
ouyanghuahua 2009-03-27
  • 打赏
  • 举报
回复
学习!
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
有什么参数啊?
yangqidong 2009-03-27
  • 打赏
  • 举报
回复
点击按钮跳转到一个提示发贴成功的页面,
在该页面上用javascript控制过几秒钟再跳转回原页面即可
yinzai126 2009-03-27
  • 打赏
  • 举报
回复
shishuangquan 的办法不行,因为页面有参数
yinzai126 2009-03-27
  • 打赏
  • 举报
回复
哈哈,这种方法也有,我去试下,自己顶下,希望能有其它更好的答案
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
2楼的方法能解决因为网络慢造成的重复点击 “提交”造成的数据重复,但是不能解决“刷新”造成的数据重复
shishuangquan 2009-03-27
  • 打赏
  • 举报
回复
最简单的方法是提交完成后再跳转回本页面

if (提交成功)
{
Page.RegisterStartupScript("startup", "<script language='javascript'>alert('提交成功!');</script>");
Response.Redirect("admin.aspx");
}
cppfaq 2009-03-27
  • 打赏
  • 举报
回复
Button1_Click后把button.Enabled设置成False
在textbox1的textchanged事件里面把button.Enabled设置成true
可否?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧