我有点新的这个,我的英语也很差。 无论如何:
我试图设置刷新我的网页,如果有对我的报告中的任何新的记录计时器。 显然,因为当我调试它,它进入功能我的定时器工作正常Timer1_Tick
,但它不会刷新我的网页。
下面是代码:
System.Timers.Timer Timer1 = new System.Timers.Timer();
Timer1.Interval = 10000;
Timer1.Elapsed += Timer1_Tick;
Timer1.Enabled = true;
和
protected void Timer1_Tick(object sender, EventArgs e){
Response.Redirect("ReporteIncidencia.aspx"); //1st attempt
ScriptManager.RegisterStartupScript(Page, typeof(Page), "somekey", "RefreshPage()", true); //2nd attempt
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "RefreshPage()", true); //3rd attempt
}
也
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
编辑:
- 我使用的.NET框架3.5
- 我想这个职位 ,但它不工作。
- 感谢您的回答。
我建议你使用Ajax来执行此操作。
但是,一个简单的方法来实现这一目标是使用Asp.Net定时器和更新面板组件。
在的.aspx:
<asp:ScriptManager runat="server" id="ScriptManager1"/>
<asp:UpdatePanel runat="server" id="UpdatePanel1">
<ContentTemplate>
<asp:Timer runat="server" id="Timer1" Interval="10000" OnTick="Timer1_Tick">
</asp:Timer>
<asp:Label runat="server" Text="Page not refreshed yet." id="Label1">
</asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
在后面的代码:
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = "Panel refreshed at: " +
DateTime.Now.ToLongTimeString();
}
在asp:ScriptManager的组件需要使用更新面板。 更多信息这里 。
这不工作的原因是,一旦响应从服务器发送到客户端,服务器可以不再修改响应,因此不能注册启动脚本。 你必须记住ASP.NET页面的生命周期以及服务器和客户端之间的区别。
相反,您可以实现,关于在JavaScript客户端上运行,如在一个计时器如何重新加载页面每隔5秒 ?
然而,这并不理想,因为现在你的页面会再次请求页面的整个HTML。 这是一个很大的开销。 相反,你应该只刷新所需的数据。 我描述了这个各种技术如何实现实时数据的网页 ,其中讨论一个UpdatePanel,AJAX投票,并使用SignalR。 请注意,我特别建议对UpdatePanel的。 他们是棘手的,效率低下。
asp.net服务页面后,它就不再与服务器的通信。 网页加载完成后,将无法从代码推送通知后面的客户端。 *
如果你只是想重定向一段时间后用户中,检查客户端上的时间,如:
C#:
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "RefreshPage()", true);
JavaScript的
<script type="text/javascript">
function RefreshPage()
{
setTimeout(function(){
window.location.reload();
}, 10000);
}
</script>
否则,您可以创建从客户端到服务器不时的请求。
- 还有的WebSockets和SSE,例如,但他们都不是最好的解决办法,如果你只是想用它来刷新页面