我在UpdatePanel中有一个计时器,每秒刷新一次面板。问题是每次触发timer事件时都会重新加载页面并重新初始化所有变量。
每次timere事件发生时,如何阻止页面重新加载?
我的Asp代码是:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
<Triggers>
</Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Enabled="false" Interval="1000">
</asp:Timer>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</ContentTemplate>
</asp:UpdatePanel>
修改
我的页面加载代码:
protected void Page_Load(object sender, EventArgs e)
{
if (File.Exists("D:\\server\\a.txt"))
{
logged = File.ReadAllText("D:\\server\\a.txt");
}
if (logged != "1")
{
//update some text labels
}
else
{
Timer1.Interval = 1000;
Timer1.Enabled = true;
}
}
答案 0 :(得分:4)
UpdatePanel
限制客户端更新并减少网络流量,但它们仍会生成完整的服务器端更新。导致回发的客户端计时器将导致完整的服务器端刷新。您需要保留变量,因此请考虑使用ViewState。
如果要消除服务器端更新,则需要拦截回发并在客户端上完全处理客户端更新。