如何在ASP.NET中刷新页面?(通过代码使其重新加载)
在ASP.NET中如何刷新页面?(用代码让其自动重新加载)
问题出现的原因:
在页面渲染给客户端后,只有两种方法可以强制刷新。一种是使用JavaScript的setTimeout函数,另一种是使用Meta标签的http-equiv属性。
解决方法:
1. 使用JavaScript的setTimeout函数:
setTimeout("location.reload(true);", timeout);
需要在服务器端设置刷新时间间隔。
2. 使用Meta标签:
<meta http-equiv="refresh" content="600">
需要在服务器端设置刷新时间间隔。
3. 在.NET中使用Server.TransferRequest:
请参考下面的答案,这是在.NET中实现这一功能的好方法,使用Server.TransferRequest
。
4. 使用Response.Redirect:
对于未使用服务器端支持的页面,这种方法可能是正确的,但对于指定的.NET,正确的方法是使用Response.Redirect。
这是一个ASP.NET中的问题,用户想要通过代码让页面刷新自身。解决方法是使用Server.TransferRequest
来实现,而不是使用Response.Redirect
。使用Server.TransferRequest
只需要一次请求,而Response.Redirect
需要两次请求。
具体解决方法如下:
在ASPX页面的源代码中添加以下代码:Server.TransferRequest(Request.Url.AbsolutePath, false);
即可实现页面刷新。
这个方法在一些情况下比Response.Redirect
更有效,特别是在Response.Redirect
无法正常工作的情况下。
需要注意的是,使用Server.TransferRequest
并不能清除页面的状态,例如TextBox
的.Text
属性或Button
的.Visible
属性。
至于在ASPX页面的源代码中的具体位置,用户没有提供明确的指示。
ASP.NET中如何刷新页面?(通过代码重新加载页面)
在我的用户控件中,更新数据后我使用以下代码来刷新页面:
Response.Redirect(Request.RawUrl);
这确保页面被重新加载,并且在用户控件中运行良好。使用RawURL而不是Request.Url.AbsoluteUri
是为了保留请求中可能包含的所有GET参数。
你可能不想使用__doPostBack
,因为许多aspx页面在进行PostBack时的行为不同。
你会使用第二个参数Response.Redirect(Request.RawUrl, false)吗?显然,在使用reponse.redirect时这是最佳实践。你怎么看?
我个人从未使用过第二个参数,并且也从未因此遇到过任何问题,所以我不确定它能带来什么好处。但是根据文档,如果你打算调用CompleteRequest,你应该使用第二个参数,但我从未费心去使用过。
有时,当当前页面有一个Id参数(比如stackoverflow上的questionId)时,你可能需要使用AbsoluteUri。或者我理解错了吗?
是的,如果你不需要停止页面上的所有处理(这有时表明设计规划不良),你应该将false作为第二个参数传递。不传递第二个参数,或者传递true,会引发一个HttpException,并可能影响性能并填满事件日志。