2013-11-08 7 views
6

Привет, я много искал переполнение стека, чтобы найти подходящий ответ на мой вопрос, но не смог его найти. Надеюсь, вы, ребята, поможете мне с моей проблемой.Asp.net Timer and Update Panel

У меня есть веб-приложение, имеющее две панели обновления.

1-я панель обновления содержит только таймер, интервал которого составляет только одну секунду и действует как таймер обратного отсчета.

Вторая панель обновления - условная панель, которая обновляется только после завершения обратного отсчета.

Проблема, с которой я столкнулся, заключается в том, что когда я публикую свое веб-приложение, таймер, похоже, не работает правильно на странице, как обычно используется наверху (я предполагаю, что он обновляется). На локальном хосте он работает без проблем. Код приведен ниже ASPX файл и файл aspx.cs

<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
    <ContentTemplate> 
    <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick"> 
    </asp:Timer> 
    <div class="form-area"> 
     <div class="clock"> 
     <p><img id="c-time" src="images/clock.png"/>Current Time 
      <span class="spanclass"> 
      <asp:Label ID="CurrentTimeLabel" runat="server" Text="Label"> 
      </asp:Label> 
      </span> 
     </p> 
     </div> 
     <p id="text"> 
     <asp:Label ID="Processing" runat="server" Text="Label"></asp:Label> 
     <br /> 
     <asp:Label ID="FilterLabel" runat="server" Text="Label"></asp:Label> 
     <br />Time Left for list to Refresh 
     <span class="spanclass"> 
      <asp:Label ID="TimeLeftLabel" runat="server" Text=""></asp:Label> 
     </span> 
     </p> 
    </div> 
    <div class="clear"></div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

и aspx.cs

protected void Timer1_Tick(object sender, EventArgs e) 
    { 
     CurrentTimeLabel.Text = DateTime.Now.ToShortTimeString(); 
     if (SecondsLeft > 0) 
     { 
      SecondsLeft--; 
     } 

     else if (MinutesLeft > 0) 
     { 
      MinutesLeft--; 
      SecondsLeft = 59; 
     } 
     if (SecondsLeft < 10) 
     TimeLeftLabel.Text = " 0" + MinutesLeft + ":" + "0" + SecondsLeft; 
     else 
     TimeLeftLabel.Text = " 0" + MinutesLeft + ":" + SecondsLeft; 
     if (MinutesLeft == 5) 
     { 
      FilterLabel.Text = ""; 
     } 
     if (MinutesLeft == 0 && SecondsLeft == 0) 
     { 
      function(); 
     } 

    } 

Спасибо заранее. Ждем справку

+0

У вас есть '' в web.config? Он добавляется при переносе с .NET 1.1 и закручивает ваш ajax. Кроме того, есть способы отображения таймера в javascript, не делая обратной передачи каждую секунду. – Ovidiu

+0

Я использую VS 2012 с каркасом 4.0 –

ответ

1

Я согласен с Ovidiu. Попробуйте в javascript с jQuery.

$(document).ready(function(){ 
    setInterval(function() {Counter() }, 1000); 
}); 

var count= 0; 
function Counter() { 
    count++; 
    $('#testLabel').html(count); 
} 
+0

Да, это альтернатива, которую я реализовал. Мне было просто интересно, почему это не работает на веб-сайте? как на локальном хосте, он отлично работает :) Спасибо за вашу помощь. –

+0

Какая ошибка возникает при работе в прямом эфире. Не пытаетесь ли вы отлаживать код сценария java с помощью инструментов разработчика в браузере? –

1

У вас есть элемент управления ScriptManager на странице?