2009-09-04 31 views
4

的初始值,这是简单的代码:Asp.Net - 刷新页面(F5)不恢复的TextBox

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

  2. 手动将该值更改为“非原件”。

  3. 按F5。该行:

    txt.Text =“Original”;

被执行,但输入值保持 “不是原来的”

但是,当我击中进入到adressbar。该值将更改为“原始”。

更starnge是当ADRESS包含 '#' 末(使用jquery点击..)

然后,甚至当我打在adressbar,价值保持 “不是原来的”

回答

12

刷新(F5)ASP.NET页面时,它将重复最后一次采取的操作。所以在你的情况下,如果你所做的最后一件事是改变一个文本框的值,那么刷新会将文本框再次设置为该值。

但是,如果在地址栏中输入“enter”,则会指示您的浏览器放弃所有内容并进入新的全新页面。

“回传”是指您将自己提交(发布)页面返回。第一次加载页面时,IsPostBack为false,因为您只是请求页面 - 不提交任何内容。但是,您在ASP.NET页面上执行的每个操作都会提交隐藏表单到同一页面。 IsPostBack适用于那些后续请求。

最后,当地址栏中出现“#”时,点击输入该URL不会导致页面重新加载。这是因为#表示锚点。如果您已经在“第x页”并尝试导航到“page x#something”,页面将不会重新加载 - 它将保持原样在浏览器中,最多跳转到锚点,但不会重新加载。

+0

硬刷新(CRTL + F5)如何?这不应该像一个新的要求? – Eddie 2009-09-17 18:55:44

+1

@Eddie CTRL-F5仍然重复上一次操作,但还会通知浏览器更新所有缓存资源。 – 2009-09-17 19:09:21

1

你使用什么浏览器?有些浏览器和插件试图在不同情况下保留表单设置。

2

昨天我注意到IE(7)和Firefox(3.5)的区别!我使用一些输入字段在html中创建了一个表单,并且使用IE浏览器,刷新导致所有表单被重新设置为空白(默认状态),但在FireFox中,刷新页面重新载入(包括代码更改),但保留我在田野写下的价值观!开发/测试时非常有用,所以我不需要每次都重写我的测试数据!

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

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

+0

是的,我也看到这与Firefox。我认为,FF是为了避免丢失用户输入的内容。 ari的问题没有提及发布表单的任何内容,所以我认为Rex M可能会描述不同的场景。 – 2009-09-04 06:37:08

-1

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

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

+0

@chris - 错误。你不知道你在说什么。 – Jagd 2011-03-02 16:46:09