【问题标题】:how can recognize Timer's callback (Timer Is In Master Page) In both Master & Content Page如何在母版页和内容页中识别计时器的回调(计时器在母版页中)
【发布时间】:2011-10-26 09:28:04
【问题描述】:

我的页面基于 c# 中的 asp.net 中的母版页和内容页。
我在母版页中有一个计时器,如下所示:

                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:Timer runat="server" ID="Timer1" Interval="10000" Enabled="False">
                            </asp:Timer>
                            <div id="SiteStatistics">
                                <asp:Label ID="lblDownload_Count_Title" runat="server" Text="Download Count :" ToolTip="Download Count :"
                                    CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Count" runat="server" Text="<%# Download_Count() %>" CssClass="lblCountInStatistics"></asp:Label>
                                <br />
                                <asp:Label ID="lblDownload_Count_By_UserID_Title" runat="server" Text="Ur Download Count :"
                                    ToolTip="Your Download Count From The Begining Of Registration UpTo Now" CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Count_By_UserID" runat="server" Text="<%# Download_Count_By_UserID() %>"
                                    CssClass="lblCountInStatistics"></asp:Label>
                                <br />
                                <asp:Label ID="lblDownload_Count_By_UserID_Today_Title" runat="server" Text="Ur Download Count-Today :"
                                    ToolTip="Your Download Count-Today" CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Count_By_UserID_Today" runat="server" Text="<%# Download_Count_By_UserID_Today() %>"
                                    CssClass="lblCountInStatistics"></asp:Label>
                                <br />
                                <asp:Label ID="lblDownload_Size_By_UserID_Title" runat="server" Text="Ur Download Size :"
                                    ToolTip="Your Download Size From The Begining Of Registration UpTo Now" CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Size_By_UserID" runat="server" Text="<%# Download_Size_By_UserID() %>"
                                    CssClass="lblCountInStatistics"></asp:Label>
                                <br />
                                <asp:Label ID="lblDownload_Size_By_UserID_Today_Title" runat="server" Text="Ur Download Size-Today :"
                                    ToolTip="Your Download Size-Today" CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Size_By_UserID_Today" runat="server" Text="<%# Download_Size_By_UserID_Today() %>"
                                    CssClass="lblCountInStatistics"></asp:Label>
                                <br />
                                <asp:Label ID="lblDownload_Size_By_UserID_Today_Remain_Title" runat="server" Text="Ur Remain Download Size-Today :"
                                    ToolTip="Your Remain Download Size-Today" CssClass="lblTitleInStatistics"></asp:Label>
                                <asp:Label ID="lblDownload_Size_By_UserID_Today_Remain" runat="server" Text="<%# Download_Size_By_UserID_Today_Remain() %>"
                                    CssClass="lblCountInStatistics"></asp:Label>
                            </div>
                        </ContentTemplate>
                    </asp:UpdatePanel>

此计时器每 10 秒计时一次并导致回调 -> 由于该计时器,内容页的第一个 page_load 和母版页的最后一个 page_load 每 10 秒触发一次!
我如何在主页面和内容页面中识别 timer'callback 并防止由于回调而一次又一次地运行代码?

提前致谢

【问题讨论】:

  • 回发总是触发主内容页的Page_Load,你应该处理Timer's Tick-Event
  • 或者您在寻找 Page.IsCallback 属性?
  • 您在每次回发时运行什么代码?也许你应该用!Page.IsPostback()-check 包围它。
  • @Tim Schmelter 感谢 4 条评论/但滴答事件无法帮助我识别主页面和内容页面加载中的计时器回调/除了计时器的滴答声在母版页中,因此内容页面没有此类事件/ 我想在内容 page_load 中使用 if 来防止在计时器滴答时运行内容 page_load 代码 ....
  • 这对于识别定时器的回调是必要的 - 不是所有的回调/我认为 Page.IsCallback 是好的/但在某些回调中我想要 page_load 代码/

标签: c# asp.net timer master-pages


【解决方案1】:

您有多种选择:

  1. 删除计时器。看来您实际上并不想要它/需要它。
  2. 在 Master 和 Page 的 Page_Load 上,将您的代码包含在 if(!IsPostBack){//code}
  3. 在 Page_Load 检查 Request.Params["__EVENTTARGET"] 并查看它是否包含 Timer1

【讨论】:

  • 我正在寻找选项#3 -> 这正是我想要的......谢谢 lcarus!我对其进行了测试,它可以工作。
猜你喜欢
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多