2

我陷入了一个非常不寻常的问题。我有一个用 C# 编写的代码,它只是IsPostBack检查Page_Load. 我知道IsPostBack当页面第一次登陆时它仍然是错误的,并且只有当任何控件将表单发布到服务器时才 bocme true(具有runat=sever)。

我也知道,如果我们点击刷新,该IsPostBack属性应该更改为 false(因为刷新不是回发)。

这是示例代码:

if (!IsPostBack)
{
    // If I click on any control on the page, and then hit refresh,
    // the code inside this block should execute, but this is not happening.
    // After first postback, I tried refreshing the page for more than
    // ten times, but always finds IsPostBack=true

    // ...
}
else
{
    // ...
}

我点击了服务器端按钮(回发),然后点击刷新。我认为它会进入 if 块但没有运气。无论我在浏览器上点击刷新多少次,IsPostBack总是如此。这确实是我以前从未见过的不寻常的活动。

我真的很感激任何帮助。我需要知道为什么会这样,这是与浏览器相关的问题还是其他问题?我使用了 Mozilla 和 chrome。

每次我点击刷新时,我都会在两个浏览器上收到警告。

  • 在 chrome 上:确认表单提交您正在寻找您输入的已使用信息的页面,返回到该页面可能会导致您执行的任何操作被重复。您要继续吗?

  • 在 mozilla 上:确认要显示页面,firefox 必须发送将重复任何操作的信息...

提前感谢您的任何帮助。

普拉文

4

2 回答 2

2

如果您在发布后刷新,大多数浏览器都会发布相同的数据。

这就是您所看到的对话的含义(他们在询问您是否要重新发布 - 单击是/确定意味着重新发布)。

为了避免重新发布,只需转到地址栏并按回车即可。这将导致新请求成为问题,而不是重新发布。

于 2012-09-07T11:17:35.610 回答
1

浏览器弹出的那些对话框告诉您他们将进行回发,而不是仅仅获取页面。您可以在代码中看到警告是准确的 - 在原始回发中调用的任何处理程序都将被第二次调用。这是回发的主要问题之一——它们基本上破坏了刷新键。如果您只想加载页面,则必须将鼠标移至地址栏并按 Enter。这将加载 IsPostback 为 false 的页面。

于 2012-09-08T00:08:45.110 回答