【问题标题】:Refreshing causes my post to "post" again刷新导致我的帖子再次“发布”
【发布时间】:2015-04-08 12:17:45
【问题描述】:

所以我有这样的帖子方法:

<form method = "post">

在帖子中,我有这个:

<input name="insertInto" type="submit" value="Insert">

为了“捕捉”Insert 按钮已被点击,我在我的 VB.NET 代码中使用了它:

If (request.Form("insertInto") = "Insert")
End If

现在这几乎可以完美运行...除非我刷新页面。当我刷新页面时,帖子似乎再次“发布”。如,Insert 按钮似乎被我再次点击,只需刷新页面。如何防止这种情况发生?

【问题讨论】:

标签: javascript html asp.net vb.net


【解决方案1】:

在您的回答中,您提到您使用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

当我在发布之前对此进行测试时,我能够在不执行插入代码的情况下刷新页面。

【讨论】:

  • 谢谢,这非常有用。一切都在服务器端运行。
【解决方案2】:

当您点击“刷新”时,帖子数据会再次发送到页面(现代浏览器中会显示一个警告框来通知您)。

避免这种情况的一种方法是在显示的 html 和操作执行之间设置一个页面。然后,表单被提交给操作执行,并且在完成任何操作之后,它将用户转发回 HTML 页面。

这有意义吗?

【讨论】:

  • 感谢您的提示,但这对我来说似乎是一个快速修复。这是防止转发的唯一方法吗?
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 2011-06-25
  • 2022-08-14
  • 2017-04-06
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多