Asp.Net-页面刷新(F5)不还原TextBox的初始值

Asp.Net-页面刷新(F5)不还原TextBox的初始值,asp.net,postback,viewstate,page-lifecycle,Asp.net,Postback,Viewstate,Page Lifecycle,以下是简单的代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { txt.Text = "Original"; } } 第一批。文本框状态为“原始” 手动,将值更改为“非原始” 按F5。该行: txt.Text=“原件” 执行,但输入值保持“非原始” 但是,当我点击进入地址栏时。该值更改为“原始” 更重要的是当地址末尾包含“#”时(使用jquery单击.

以下是简单的代码:

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

  • 手动,将值更改为“非原始”

  • 按F5。该行:

    txt.Text=“原件”

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

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

    更重要的是当地址末尾包含“#”时(使用jquery单击..)

    然后,即使在我点击地址栏时,值仍保持“非原始”

    当您刷新(F5)ASP.NET页面时,它将重复上次执行的操作。因此,在您的情况下,如果您最后更改了textbox值,刷新将再次将textbox设置为该值

    但是,在地址栏中点击“回车”会指示浏览器放弃所有内容,进入全新页面

    “回发”意味着您正在将页面提交(发布)回自身。第一次加载页面时,IsPostBack为false,因为您只是请求页面,而没有提交任何内容。但是你在ASP.NET页面上的每一个动作——一旦你到了那里——都是向同一个页面提交一个隐藏的表单。对于这些后续请求,IsPostBack为true


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

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

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

    出于好奇,我刚刚在ASP.NET中编写了一个简单的测试,我注意到您对Firefox所做的相同操作:点击刷新按钮保留更改的值,但点击地址栏中的Enter键,重新加载
    Page\u Load
    中设置的原始文本。但在IE中,这两种情况下的值都重置为原始值

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

    当您刷新(F5)ASP.NET页面时,它将重复上次执行的操作。因此,在您的情况下,如果您最后更改了textbox值,刷新将再次将textbox设置为该值


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

    是的,我在firefox中也看到过这种情况。我假设FF这样做是为了避免丢失用户输入的内容。ari的问题没有提到任何关于发回表单的内容,所以我认为Rex M可能描述了一个不同的场景。那么硬刷新(CRTL+F5)呢?这不应该像一个新请求一样工作吗?@Eddie CTRL-F5仍然重复上一个操作,但也告诉浏览器更新任何缓存的资产。@chris-不正确。你不知道你在说什么。