F5浏览器刷新和回发之间有区别吗?(asp.NET)

时间:2010-07-22 12:19:36

标签: .net asp.net postback refresh

我在asp.NET

中动态创建现有数据网格的不同行中的dragrids

我生成的数据网格有一列是TemplateColumn(一个CheckBox列)。

在我的父数据网格中,我有一个带复选框的模板列。当我选中或取消选中复选框的值时,会调用check_change方法(autopostback设置为true),动态生成的datagrids将丢失已选中的复选框(复选框都将再次取消选中)。但是,如果我检查子项(动态生成的)网格的任何复选框并按F5,它会刷新页面,但我仍然选中了复选框。

发生了什么事?如何回复不同于刷新F5 ???理解这可能有助于我解决我的问题:DataGrid not being altered!

3 个答案:

答案 0 :(得分:2)

很简单,浏览器缓存响应。因此,如果您按F5,您通常会每次都看到带有选中复选框的网格。但是,如果您在代码中进行回发,则强制浏览器连接到服务器并发布数据。

然后等待来自服务器的响应,并返回回发的原因。

很烦人,但这就是浏览器的工作原理。您可以通过按Ctrl + F5强制完成刷新而不是模拟回发。

这有时(有时)取决于浏览器,因为并非所有浏览器的行为都与您在此处描述的相同。

如果需要回发,但您仍希望将复选框状态保持为已选中状态,我建议您改为使用AJAX。

答案 1 :(得分:1)

“刷新”只是调用最后一个页面请求。因此,如果 你只是浏览了一个页面然后点击刷新,它只是要求该页面 试。

回发本质上是发送页面上的一个操作 信息回到服务器。

答案 2 :(得分:0)

理想情况下,它是PostBack,但如果您在每次访问时将其设置为“服务器请求”页面,或者从“本地Histroy缓存”中选择,则它将取决于您的浏览器设置。

点击“刷新”按钮将从服务器向页面发出新请求, 并且它不会更改Http Method(Get , Post)的状态,我的意思是它不会更改页面的IsPostBack状态。

但是,提交表单(发布表单)会将IsPostBack属性设置为true 并且约page_load将调用两个案例