这是简单的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txt.Text = "Original";
}
}
首次加载。文本框状态为“原始”。
手动将值更改为“Not Original”。
按F5。这一行:
txt.Text =“Original”;
已执行,但输入值仍为“非原创”
但是,当我点击进入地址栏时。该值将更改为“原始”。
更多的starnge是当地址末尾包含'#'时(使用jquery点击..)
然后,即使我点击地址栏,值仍为“非原创”
答案 0 :(得分:12)
刷新(F5)ASP.NET页面时,它将重复最后一次采取的操作。因此,在您的情况下,如果您做的最后一件事是更改文本框值,则刷新将再次将文本框设置为该值。
然后,在地址栏中点击“enter”,指示您的浏览器放弃所有内容并完全全新地转到该页面。
“回发”表示您正在向自己提交(发布)页面。第一次加载页面时,IsPostBack是错误的,因为您只是在请求页面 - 而不是提交任何内容。但是,您在ASP.NET页面上执行的每个操作 - 一旦您在那里 - 就会将隐藏的表单提交到同一页面。 IsPostBack适用于后续请求。
最后,当地址栏中有“#”时,点击该URL上的输入将不会导致页面重新加载。这是因为#表示锚。如果您已经在“页面x”并尝试导航到“页面x #thing”,则页面将不会重新加载 - 它将保持在浏览器中,最多跳转到锚点,但不会重新加载。
答案 1 :(得分:2)
我昨天注意到IE(7)和Firefox(3.5)的差异!我用html创建了一个带有一些输入字段的表单,并且使用IE,刷新导致所有字段被设置回空白(默认状态)但是在FireFox中,刷新重新加载页面(包括我已完成的代码更改)但保留了我在田里写的价值观!在开发/测试时非常有用,所以我不需要每次都重写我的测试数据!
为了好奇,我刚刚在ASP.NET中编写了一个简单的测试,我注意到你为Firefox做的一样:点击刷新按钮保持更改的值,但是在地址栏中点击Enter,重新加载原始文本集在Page_Load
。但在IE中,两种情况下的值都会重置为原始值!
至于不同案例之间的基本(不依赖浏览器)差异,Rex M的答案非常好。
答案 2 :(得分:1)
您使用的浏览器是什么?某些浏览器和插件尝试在不同情况下保留表单设置。
答案 3 :(得分:-1)
当您刷新(F5)ASP.NET页面时,它将重复上一次采取的操作。因此,在您的情况下,如果您做的最后一件事是更改文本框值,则刷新将再次将文本框设置为该值。
不,它不会,除非您在更改文本框中的值后触发了表单提交。