所以我的帖子方法是这样的:
<form method = "post">
在帖子中,我有这个:
<input name="insertInto" type="submit" value="Insert">
To&#34; catch&#34;单击了Insert
按钮,我在我的VB.NET代码中使用了它:
If (request.Form("insertInto") = "Insert")
End If
现在这种方法非常接近......除非我刷新页面。当我刷新页面时,帖子似乎&#34; post&#34;再次。就像在,只是刷新页面,Insert
按钮似乎再次被击中。我该如何防止这种情况?
答案 0 :(得分:0)
当您点击&#34;刷新&#34;时,会将帖子数据再次发送到该页面(现代浏览器中会显示一个警告框,通知您)。
避免这种情况的一种方法是在显示html和动作执行之间有一个页面。然后,表单将提交给操作执行,在完成任何操作后,它会将用户转发回HTML页面。
这有意义吗?
答案 1 :(得分:0)
在您的回答中,您提到您已使用VB.Net
代码来帮助执行Insert
代码。您可以在后面的代码中进一步扩展VB.Net
的使用,以帮助解决您遇到的问题。
这是一个有希望帮助你的例子:
在您的ASPX
页面中,您可以使用以下内容替换您的表单代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button runat="server" ID="btnInsertInto" Text="Insert" />
</div>
</form>
</body>
</html>
表单的提交现在由ASP Button
(asp:Button
)处理,并且与代码隐藏文件中的事件相关联:
Private Sub btnInsertInto_Click(sender As Object, e As EventArgs) Handles btnInsertInto.Click
' Handle button click code here..
End Sub
在同一个代码隐藏类中,您可以使用Page_Load
子来处理页面初始化代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' Page initialization code goes here..
End If
End Sub
因此,整个代码隐藏类看起来像:
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' Page initialization code goes here..
End If
End Sub
Private Sub btnInsertInto_Click(sender As Object, e As EventArgs) Handles btnInsertInto.Click
' Handle button click code here..
End Sub
End Class
当我在发布之前对此进行测试时,我能够在不执行插入代码的情况下刷新页面。