ASP.NET利用UpdatePanelScriptManagerTimer完成定时局部更新
Posted yongh701
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET利用UpdatePanelScriptManagerTimer完成定时局部更新相关的知识,希望对你有一定的参考价值。
在《【ASP.NET】利用UpdatePanel与ScriptManager完成局部的更新》(点击打开链接)介绍过如果直接利用C#完成javascript中Ajax的局部更新。
其实在ASP.NET3.5版本之后,可以完全可以像窗体程序《【C#】Timer、窗体大小和屏幕大小》(点击打开链接)中的Timer一样,实现javascript中setInterval的特效。
下面用一个例子来说明这个问题。
在一个页面有两个文本,一个是一秒刷新一次,一个不会被更新,其实这完全可以利用《【JavaScript】一个同步于本地时间的动态时间》(点击打开链接)完成的。
当然,如果定时更新中涉及一些后台代码,用ASP.NET这样写,也不失为一种好方法。
具体代码如下,上述页面的前端代码Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Timer._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" />
<asp:Timer ID="Timer1" runat="server" Interval="500" OnTick="Timer1_Tick" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Label ID="Label2" runat="server" /><br />
</div>
</form>
</body>
</html>
后端代码Default.aspx.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Timer
public partial class _Default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
Label1.Text = DateTime.Now.ToString();
Label2.Text = DateTime.Now.ToString();
protected void Timer1_Tick(object sender, EventArgs e)
Label1.Text = DateTime.Now.ToString();
Label2.Text = DateTime.Now.ToString();
这样话,在Default.aspx标签仅能管辖<asp:UpdatePanel>中<ContentTemplate>标签内的内容,出了这个标签的组件,即使后端代码Default.aspx.cs涉及到这个组件没有报错,由于UpdatePanel的存在,ASP.NET也不会UpdatePanel以外的组件。如上方所示的在UpdatePanel以外的Label2就不会被Timer1所操作。Timer1的Tick事件就算有关于Label2的代码,也仅能操作其中的Label1。
此外,还有一个小提示,Timer1必须被设置Interval,表示Timer1_Tick方法会在多少多少毫秒执行1次,这样Timer才会生效,不会Timer没有Interval是不会更新任何东西的。
以上是关于ASP.NET利用UpdatePanelScriptManagerTimer完成定时局部更新的主要内容,如果未能解决你的问题,请参考以下文章
[翻译] ASP.NET Core 利用 DockerElasticSearchKibana 来记录日志
总结:利用asp.net core日志进行生产环境下的错误排查(asp.net core version 2.2,用IIS做服务器)