即使在页面刷新之后,页面的IsPostBack属性也不会变为false

时间:2012-09-07 11:12:23

标签: c# asp.net postback

我遇到了一个非常不寻常的问题。我有一个用C#编写的代码,它只是检查IsPostBack上的Page_Load属性。我知道当页面第一次登陆时IsPostBack仍然是假的,并且仅当任何控件将表单发布到服务器(具有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必须发送将重复任何操作的信息...

提前感谢任何帮助。

普利文

2 个答案:

答案 0 :(得分:1)

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

这是您所看到的对话的含义(他们询问您是否要重新发布 - 单击是/ OK表示重新发布)。

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

答案 1 :(得分:1)

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

相关问题