我怎么能刷新ASP页从后面的代码? C#[重复](How can i refresh a asp

2019-10-21 19:23发布

这个问题已经在这里有一个答案:

  • 刷新页面C#ASP.NET 10回答

我有点新的这个,我的英语也很差。 无论如何:

我试图设置刷新我的网页,如果有对我的报告中的任何新的记录计时器。 显然,因为当我调试它,它进入功能我的定时器工作正常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>

编辑:

  1. 我使用的.NET框架3.5
  2. 我想这个职位 ,但它不工作。
  3. 感谢您的回答。

Answer 1:

我建议你使用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的组件需要使用更新面板。 更多信息这里 。



Answer 2:

这不工作的原因是,一旦响应从服务器发送到客户端,服务器可以不再修改响应,因此不能注册启动脚本。 你必须记住ASP.NET页面的生命周期以及服务器和客户端之间的区别。

相反,您可以实现,关于在JavaScript客户端上运行,如在一个计时器如何重新加载页面每隔5秒 ?

然而,这并不理想,因为现在你的页面会再次请求页面的整个HTML。 这是一个很大的开销。 相反,你应该只刷新所需的数据。 我描述了这个各种技术如何实现实时数据的网页 ,其中讨论一个UpdatePanel,AJAX投票,并使用SignalR。 请注意,我特别建议对UpdatePanel的。 他们是棘手的,效率低下。



Answer 3:

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,例如,但他们都不是最好的解决办法,如果你只是想用它来刷新页面


文章来源: How can i refresh a asp page from code behind? C# [duplicate]