仰天一笑

昨日不悔,今日勿失,明日莫忧! —徐羽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  230 随笔 :: 27 文章 :: 812 评论 :: 41 引用


使用asp.net,在刷新页面的时候会自动触发服务器端的事件。举个简单的例子,如:一个注册页面,我们填写完注册信息之后,如果按F5刷新之后,会自动触发到Button事件上,这样就造成了又注册了一次的麻烦。

我先前的解决方案:用关键字查询,如有相同,则提示已有此用户。

但是这种方案不能在没有表识的情况下使用,他会重新提交。鉴于此,我寻找了一种新的解决方案,很庆幸,在朋友的提点下,迸发了这样的解决方案,肯定有更好的解决方案,不吝赐教。

解决思路:刷新时,捕捉KeyPress,让他触发其他无用的事件。

1、捕捉F5事件的JavaScript
window.document.onkeydown = KeyStroke;

function KeyStroke()
{
 var key = event.keyCode;
 
 event.srcElement.releaseCapture();
 if(key == 116)
 {
  document.getElementById("Button1").click();
  event.keyCode=0;
  event.returnValue=false;
 }
}

2、aspx页面放置一个Button

   <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 344px; POSITION: absolute; TOP: 408px; WIDTH: 0px;" runat="server"
    Text="Button"></asp:Button>

3、Button事件
private void Button1_Click(object sender, System.EventArgs e)
  {
        Response.Write( "You have pressed the key F5");
  }

这个“舍车保帅”的方案,能解决刷新自动触发事件的解决方案这个小问题,如果谁有更好的方案,希望告诉我一声,不胜感激!

posted on 2006-06-05 20:07 仰天一笑 阅读(3313) 评论(11)  编辑 收藏 所属分类: 原创天地ASP.Net-C#

评论

#1楼  2006-06-06 08:46 aspnetx      
session验证
  回复  引用  查看    

#2楼  2006-06-06 08:52 代码乱了      
其实要完全防止刷新是不可能的
  回复  引用  查看    

#3楼  2006-06-06 09:24 Bear.sTaR{R}      
以前在MSDN看过防刷新的文章,不过要写的代码太多太复杂了,很郁闷。

一般简单的防刷新是利用跳转页面的,当用户注册成功了跳到另个页面显示注册

成功。
  回复  引用  查看    

#4楼  2006-06-06 10:07 Tianjj [未注册用户]
楼上正确,也可以在执行完服务端事件后,javascript:window.location=window.location.href;
  回复  引用    

#5楼  2006-08-15 21:02 高海东      
我认为楼主的方法不错 如果跳转页面感觉不太好
  回复  引用  查看    

#6楼 [楼主] 2006-08-16 11:34 仰天一笑      
@Tianjj
你的方法也可以,重新加载页面,虽然跳转页面的,但是客户感觉不到,这个适用于注册之类加载页面时候无需其他操作,如果是数据库修改之类,你如果重新加载页面的话,将会重新连接数据库,那样就加大开销了
  回复  引用  查看    

#7楼  2006-10-12 01:49 英雄之风      
看上去是个小问题,却恶心的要死.
  回复  引用  查看    

#8楼  2006-12-07 10:21 kl[匿名] [未注册用户]
用鼠标点刷新,以上写法就不好用了!!!!!
  回复  引用    

#9楼 [楼主] 2006-12-07 18:54 仰天一笑      
@kl[匿名]
是的,鼠标刷新,这个方法是不灵的。解决方案如下:
1、因为用鼠标点击刷新很繁琐,如果他如此无聊,让无聊的人去刷吧。
2、直接post返回后,直接返回该页面,如此就相当于asp的post后返回原先页面,这样他刷也无济于事。
  回复  引用  查看    

#10楼  2007-08-09 19:22 TheThird [未注册用户]
FF下不通过。
  回复  引用    

不错
  回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: