4

这是简单的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        txt.Text = "Original";
    }
}
  1. 第一次加载。文本框状态为“原始”。

  2. 手动,将值更改为“非原创”。

  3. 按 F5。该行:

    txt.Text = "原始";

已执行,但输入值保持“非原始”

但是,当我点击进入地址栏时。值更改为“原始”。

更多的是当地址最后包含'#'时(使用jquery click..)

然后,即使我在地址栏中点击,该值 仍然是“非原创”

4

4 回答 4

12

当您刷新 (F5) ASP.NET 页面时,它将重复执行的最后一个操作。因此,在您的情况下,如果您所做的最后一件事是更改文本框值,则刷新会将文本框再次设置为该值。

但是,在地址栏中点击“输入”会指示您的浏览器放弃所有内容并转到全新的页面。

“回发”意味着您将页面提交(发布)自身。第一次加载页面时,IsPostBack 为 false,因为您只是在请求页面 - 不提交任何内容。但是,您在 ASP.NET 页面上执行的每项操作(一旦您到达那里)都会将隐藏的表单提交到同一页面。IsPostBack 对于那些后续请求是正确的。

最后,当您的地址栏中有一个“#”时,在该 URL 上按 Enter 不会导致页面重新加载。这是因为 # 表示锚点。如果您已经在“页面 x”并尝试导航到“页面 x#something”,页面将不会重新加载 - 它会保持在浏览器中,最多跳转到锚点,但不会重新加载。

于 2009-09-04T05:50:11.560 回答
2

我昨天实际上注意到 IE(7) 和 Firefox(3.5) 的不同之处!我在 html 中创建了一个带有一些输入字段的表单,并使用 IE,刷新导致所有字段设置回空白(默认状态),但在 FireFox 中,刷新重新加载了页面(包括我所做的代码更改)但保留了我在字段中写的值!在开发/测试时非常有用,所以我不需要每次都重写我的测试数据!

只是出于好奇,我刚才在 ASP.NET 中编写了一个简单的测试,我注意到您在 Firefox 中所做的相同:点击刷新按钮保持更改的值,但在地址栏中点击 Enter,重新加载Page_Load. 但在 IE 中,这两种情况下的值都会重置为原始值!

至于不同情况之间的基本(不依赖于浏览器)差异,Rex M的回答非常好。

于 2009-09-04T06:12:01.530 回答
1

你使用的是什么浏览器?一些浏览器和插件会尝试在不同情况下保留表单设置。

于 2009-09-04T05:51:04.320 回答
-1

当您刷新 (F5) ASP.NET 页面时,它将重复执行的最后一个操作。因此,在您的情况下,如果您所做的最后一件事是更改文本框值,则刷新会将文本框再次设置为该值。

不,它不会,除非您在更改文本框中的值后触发了表单提交。

于 2009-09-17T18:44:23.750 回答