【问题标题】:How can I avoid a postback message?如何避免回发消息?
【发布时间】:2013-12-24 13:54:55
【问题描述】:

我在编程方面相对较新,我对回发有疑问。我搜索了一些页面,但我无法解决我的问题。

我创建了一个网页,并在其中使用回发​​来更新页面中的一些信息。这没有任何问题。但是,在触发回发后,如果用户按 F5,则会出现一条消息,要求确认重新提交表单。

为什么会出现此消息,我该如何避免? 如果用户按下 F5,我希望页面重新加载,没有任何警报。

如果我的问题不够清楚,我很抱歉,但我真的不明白我想要多少回发.. =)

【问题讨论】:

  • 你能顺利提交页面吗?
  • 你的意思是在回发之后?我不需要在它之后提交页面。

标签: asp.net postback


【解决方案1】:

默认情况下,

方法post,表示在重新加载页面时会确认。

方法get意味着它不会询问任何东西。

为什么会发生这种情况,只要服务器中会发生调用severe action的post方法,所以它只是从用户那里确认。get方法的情况下不需要。

我希望你对这个解决方案很清楚。

【讨论】:

  • 但是有没有办法避免这个消息,使用回发?我该怎么做?
  • @Everton 在我看来,这是没有办法避免的。我建议你通过ajax手动提交数据或使用javascript隐藏表单提交。
  • 但是我没有提交数据,我只是想在用户按 F5 时避免出现此消息。你对我下面的解决方案有什么看法?
【解决方案2】:

避免您的问题的一种方法是在页面上放置一个隐藏字段。提交表单后,检查隐藏字段。如果没有值,则处理表单,并用值填充隐藏字段。如果它有值,则什么也不做。

我更喜欢在按钮上使用点击事件,而不是使用回发事件。

至于为什么会发生这种情况,刷新将请求连同表单数据发送回服务器,从而导致另一个回发。

【讨论】:

  • 我使用回发是因为我有一个 html 链接,如果我有一个按钮,我也会使用点击事件。我发布了一个我认为的解决方案,你认为哪个更好:你的还是我的?
【解决方案3】:

这称为页面重新提交。

当您刷新浏览器时,它会重新发送您上次发出的请求。如果它是一个 POST 请求(就像你在回发的情况下所做的那样),那么它会重新发布信息,但在这样做之前你会看到你描述的警告消息。

为了防止这种情况:

Page.Response.Redirect(Page.Request.Url.ToString(), true);

这会将响应更改为 GET 而不是 POST。阻止“重新提交表单”对话框。

【讨论】:

  • 我想我明白你所说的,但我不确定我应该把这段代码放在什么地方..
【解决方案4】:

我想在下面的代码中使用 javascript 事件来解决我的问题:

$(document).keydown(function (event) {
    if (event.keyCode == 116) {
        location.href = 'pedidos.aspx';
        return false;
    }
});

它解决了我的问题,因为我根据需要避免了回发消息并且页面被重新加载。 但这是一个好的解决方案吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2012-04-11
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多