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

ari*_*ari 4 asp.net viewstate postback page-lifecycle

这是简单的代码:

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

  2. 手动,将值更改为"不原始".

  3. 按F5.这条线:

    txt.Text ="原创";

执行但输入值仍为"非原始"

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

更多starnge是当地址在末尾包含'#'时(使用jquery click ...)

然后,即使我点击了地址栏,价值 仍为"非原创"

Rex*_*x M 12

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

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

"回传"是指您所提交(发帖)的页面自己.第一次加载页面时,IsPostBack是错误的,因为您只是在请求页面 - 而不是提交任何内容.但是,您在ASP.NET页面上执行的每个操作 - 一旦您在那里 - 就会将隐藏的表单提交到同一页面.IsPostBack适用于后续请求.

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