2010-03-31 22 views
0

我有插入页面 - 数据插入正确与所有验证。但主要问题是插入后,如果有人点击Internet Explorer浏览器上的刷新按钮,数据再次插入相同的数据插入在提交按钮。刷新浏览器的数据正在插入 - 帮助!

感谢, Smartdev

+0

可能PLZ解释一点细节?可能会发布一些代码(.aspx和后端) – 2010-03-31 18:02:11

+0

它是一个简单的插入代码,包含五个文本框和下拉菜单,一旦用户单击提交按钮数据被插入并且im为用户清除文本框再次输入数据。但是一旦插入数据并清除了文本框,如果用户在浏览器上单击刷新,则数据将再次插入到数据库中。这是由用户插入的相同数据,当我检查数据库时,它显示的数据与时间相同秒的差异。 我dnt有任何代码 - 它只是插入方法存储过程和参数im从后面的代码传递。 谢谢 – SmartDev 2010-03-31 18:25:52

回答

1

做一个重定向你成功地执行插入,这不应该发生后。否则,你将不得不自己执行一些过程,以确保它不会发生(可能使用状态管理来设置“已保存”标志或其他东西)。

+0

+1。重定向是迄今为止最简单的方法。 – David 2010-03-31 18:03:15

+0

嗨大卫, 我不能这样做,因为im清除文本框后提交另一个条目。有没有其他方法 谢谢, Smartdev – SmartDev 2010-03-31 18:27:09

+0

重定向到同一页面。 – Jaxidian 2010-03-31 18:36:03

0

重定向会起作用。你可以使用这样的东西:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(dataWasInserted) 
     Response.Redirect("~/TheSamePage.aspx"); 
} 
+0

嗨国际象棋, 我不能这样做,因为im清除文本框后提交另一个条目提交。有没有其他方法 – SmartDev 2010-03-31 18:26:39

+0

看到我的其他答案,添加逻辑到您的存储过程。 – ChessWhiz 2010-03-31 19:20:45

0

你可以添加代码到你的存储过程,在插入之前检查数据库。如果您试图避免的数据已经存在,请不要执行插入。

如果您确实想允许有意重复数据,但不是通过意外刷新,则可以使用时间戳来帮助确定它是否是最近要阻止的重复项。不过,希望你根本不需要数据库中的重复数据,所以我不推荐这种方法。

0

尊敬的用户,您必须在上一页使用下面的代码,以避免后退按钮的工作。

example... 

suppose your page 1 is=x.jsp and page 2 is y.jsp 

to restrict x.jsp when u click on y.jsp back button you have to add this code in x.jsp 

<SCRIPT type="text/javascript"> 
    window.history.forward(); 
    function noBack() { window.history.forward(); } 
</SCRIPT> 
</HEAD> 
<BODY onload="noBack();" 
    onpageshow="if (event.persisted) noBack();" onunload="">