Div \ label \ span исчезает после завершения события таймера

Я создаю веб-приложение, у которого есть «информационная панель», охватывающая всю ширину веб-приложения. Он находится на странице DEFAULT.aspx, потому что я хочу, чтобы эта информационная панель была сверху и всегда отображалась независимо от того, где еще конечный пользователь будет в веб-приложении. Эта информационная панель будет показывать обновления, статусы и многое другое. Он работает путем чтения таблицы в базе данных, извлечения сообщения и стиля (красный, желтый, зеленый фон). Когда не о чем сообщать, он исчезает. Ниже приведен пример того, как это выглядит.

Sample infobar screenshot

По большей части все это отлично работает! Я обновляю таблицу через пользовательский интерфейс. Моя проблема вот в чем. Я хочу, чтобы информационная панель обновлялась без нажатия конечным пользователем клавиши F5 (что запускает код для извлечения данных). Поэтому, если я обновляю таблицу, таймер, который запускается каждые 5 минут (или что-то еще), проверяет, есть ли значение в таблице. Если да, возьмите его и разместите на экране. Обновление работает только в том случае, если конечный пользователь нажимает F5. Ниже мой HTML-код:

 <div>
          <asp:UpdatePanel ID="uppInfoBar" runat="server">
              <ContentTemplate>
                <asp:Timer id="tmrInfoBar" runat="server" Interval="30000" OnTick="tmrInfoBar_Tick" Enabled="true" />
                <asp:Label runat="server" id="lblinfoBar" Visible="true"  >
                    <div class="info-bar" >
                        <div class="info-bar__wrapper">
                            <i data-info-bar="icon"></i>
                            <span id="spnInfoBar" runat="server" data-info-bar="text"></span>
                            <asp:HiddenField ID="hdf_Test" runat="server"/>
                        </div>
                    </div>
                </asp:Label>
              </ContentTemplate>
          </asp:UpdatePanel>    
      </div>

Когда я просматриваю свой код C#, все значения извлекаются правильно, но на следующем шаге после последнего символа "}" в моем коде C# информационная панель исчезает. Нет никаких параметров, отключающих его нигде в проекте. Если я закомментирую таймер, запускаю все, обновляю таблицу новым сообщением, нажимаю F5, появляется обновленное сообщение.

Что я могу сделать, чтобы принудительно обновить \ обновить, чтобы информационная панель обновлялась сама по себе? И я открыт для других предложений о том, как это можно реализовать.

Спасибо!

0
0
34
1

Ответы 1

Есть несколько способов сделать это, один из них - использовать javascript на стороне клиента и использовать setInterval для выполнения вызова ajax каждые xx секунд и получения любых новых уведомлений, с помощью более новой технологии вы можете заглянуть в SignalR, чтобы ваш сервер мог отправка сообщений клиенту, документация (https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr)

Я надеялся избежать введения другого фреймворка, к тому же я не совсем с ним знаком. Но я попробую. Надеюсь, что придумаю что-нибудь, что можно будет использовать повсеместно. Спасибо за ссылку.

John Waclawski 14.09.2018 12:51

@JohnWaclawski Добро пожаловать. Я надеюсь, что это помогает.

Ryan Wilson 14.09.2018 15:14

Я играю с этим образцом чата, приведенным в руководстве. Я думаю, что смогу даже реализовать такую ​​простую вещь, как «односторонний» чат. Он заполняет DIV тем, что я ввожу в текстовое поле, как в примере. Я дам вам знать, как это происходит.

John Waclawski 15.09.2018 16:12

Другие вопросы по теме