Всплывающее сообщение asp net

Обновлено: 05.07.2024

Добрый день. Мне для сайта необходимо сделать уведомления о том, что та или иная запись была добавлена в БД. Но проблема в том, что я делаю сайт на Core, а необходимая для таких дел библиотека SignalR для COre не разработана до конца и поддержки push-уведомлений там нет. Скажите пожалуйста, есть ли альтернативные варианты, кроме того, что мне весь сайт с нуля придётся переделывать на MVC 5?

а необходимая для таких дел библиотека SignalR для COre не разработана до конца и поддержки push-уведомлений там нет

Что ты подразумеваешь под push-уведомлениями?

Это всё что нужно для уведомлений.

SignalR для Core - пока что имеет функцию локального чата, не более.

Я имею в виду простые всплывающие уведомления, типа "Вы зашли туда-то", но с использованием SignalR приходит упадок. Вот я и спрашиваю, есть ли альтернатива

Я чёт не пойму!
Ты оперируешь готовыми решениями (Чат, Push-уведомления. )?
Ты пытаешься нужный функционал из коробки получить?

SignalR позволяет передавать данные в обе стороны через постоянное соединение! Это всё что он делает! Исключительно для этого он создан!
А вот на базе этого механизма можно сделать всё что угодно! И чаты и уведомления и игры.

Я чёт не пойму!
Ты оперируешь готовыми решениями (Чат, Push-уведомления. )?
Ты пытаешься нужный функционал из коробки получить?
SignalR позволяет передавать данные в обе стороны через постоянное соединение! Это всё что он делает! Исключительно для этого он создан!
А вот на базе этого механизма можно сделать всё что угодно! И чаты и уведомления и игры.

Вот смотрите, вы мне скинули статью про создание уведомлении на MVC 5, где автор использует SignalR. Но вот когда я пытаюсь сделать что то подобное, всплывает ошибка на строчке

где мне говорят о том, что нынешний SignalR не поддерживает ConnectionManager, что делает невозможным создание Push-уведомления на странице.

Вот я и спрашиваю у вас про альтернативные варианты создания хоть каких нибудь уведомлений на странице.

Элемент управления ModalPopup в наборе средств AJAX Control Toolkit предоставляет простой способ создания модального всплывающего окна с помощью клиентских средств. Однако в некоторых сценариях требуется, чтобы открытие модального всплывающего окна вызывалось на стороне сервера.

Обзор

Элемент управления ModalPopup в наборе средств AJAX Control Toolkit предоставляет простой способ создания модального всплывающего окна с помощью клиентских средств. Однако в некоторых сценариях требуется, чтобы открытие модального всплывающего окна вызывалось на стороне сервера.

Запустите пример в браузере. При нажатии кнопки появляется модальное всплывающее окно. Чтобы добиться того же результата с помощью кода на стороне сервера, требуется новая кнопка:

Как видите, нажатие кнопки приводит к созданию обратной передачи и выполнению метода ServerButton_Click() на сервере. В этом методе функция JavaScript с именем launchModal() выполняется как точная, функция JavaScript будет выполняться после загрузки страницы:

Функция $find() ищет именованный элемент на странице и ожидает идентификатор на стороне сервера в качестве параметра. Таким образом, $find("mpe") Возвращает клиентское представление элемента управления ModalPopup; его show() метод позволяет отображать всплывающее окно.

модальное всплывающее окно появляется при нажатии одной из кнопок

Модальное всплывающее окно появляется при нажатии одной из кнопок (щелкните, чтобы просмотреть изображение с полным размером).

любые идеи о это?

вы хотите использовать оповещение. К сожалению, это не так хорошо, как с windows forms.

или создайте такой метод в своем решении:

затем вы можете использовать его как:

просто для протокола.

также он представляет выбор, как да и нет.

Инструкции о том, как получить класс ссылке работа над проектом:

  1. если у вас нет сред на ваш проект, создайте его.
  2. щелкните правой кнопкой мыши сред папка и создать класс. Назовите его MessageBox.cs
  3. скопируйте текст из MessageBox.cs (из прилагаемого кода) и вставьте его на свой MessageBox.cs.
  4. сделайте то же самое, что и шаги 2 & 3 для MessageBoxCore.cs.
  5. важно: Правой Кнопкой Мыши каждый файл MessageBox.cs и MessageBoxCore.cs и обязательно 'Build Action' установлено значение Compile

добавить этот код на вы cs страница, на которой вы хотите принять решение:

добавьте этот метод в свой cs

не совсем так. Код на стороне сервера происходит на сервере - - - вы можете использовать javascript для отображения чего-то пользователю на стороне клиента, но он, очевидно, будет выполняться только на стороне клиента. Такова природа веб-технологии клиент-сервера. Вы в основном отключены от сервера, когда получаете свой ответ.

есть несколько решений; Если вам удобно с CSS, вот очень гибкое решение:

и заполнить это data со стороны сервера code-behind:

обратите внимание, что строковое значение должно быть строкой Javascript, т. е. быть однострочным, но оно может содержать экранированные новые строки как \n .

(обратите внимание, что всплывающие окна иногда нахмурились и заблокированы)

Язык JavaScript играет важную роль при построении многих сложных веб-элементов управления. В идеальном мире разработчику веб-страницы никогда не пришлось бы беспокоиться о применении JavaScript. Вместо этого было бы достаточно запрограммировать изящные объектно-ориентированные элементы управления, визуализирующие те элементы JavaScript, в которых они нуждаются для оптимизации своего внешнего вида и производительности. Этот подход позволяет воспользоваться достоинствами обеих технологий - объектно-ориентированного программирования на сервере и полезных добавления JavaScript клиентской стороны.

Всплывающие окна

Для большинства людей всплывающие окна являются одной из самых раздражающих особенностей Интернета. Обычно с их помощью выводятся на экран рекламные объявления, но иногда они служат несколько более благородной цели предоставления полезной информации или приглашения пользователя к участию в опросе либо рекламном предложении. Разновидностью такого окна является скрытое всплывающее окно, которое отображается под текущим окном. В результате реклама не отвлекает пользователя до тех пор, пока исходное окно браузера не будет закрыто.

Всплывающее окно достаточно просто отобразить, используя функцию window.open() в блоке JavaScript, например:

Функция window.open() принимает несколько параметров. В их число входят ссылка на новую страницу и имя фрейма окна (которое важно, если новый документ должен быть загружен в этот фрейм позже посредством другой ссылки). Третий параметр - разделенная запятыми строка атрибутов, которые конфигурируют стиль и размер всплывающего окна. Этими атрибутами могут быть любые из перечисленных ниже:

height (высота) и width (ширина), которые устанавливаются в пикселях;

toolbar (панель инструментов) и menuBar (строка меню), которые могут быть установлены в значения 1 или 0, в зависимости от того, требуется ли отображение этих элементов;

resizable (изменяемый размер), которое может быть установлено в 1 или 0 в зависимости от того, требуется рамка изменяемого или фиксированного размера;

scrollbars (линейки прокрутки), который может быть установлен в 1 или 0 в зависимости от того, требуется ли отображение линеек прокрутки во всплывающем окне. Как и в случае любого другого кода JavaScript, можно добавить блок \n"); writer.Write(javaScriptString.ToString()); > else < this.Page.Response.Write("Ваш браузер не поддерживает JavaScript"); >> > >

Для использования элемента управления PopUp понадобится зарегистрировать сборку элемента управления и отобразить ее на префикс элемента управления с помощью директивы Register. Затем элемент управления PopUp можно объявить на странице. Ниже приведен пример веб-страницы, где это сделано:

Элемент управления Popup в действии показан на рисунке ниже:

Показ всплывающего окна

Обычно специальные элементы управлений регистрируют блоки JavaScript в методе OnPreRender(), вместо того, чтобы записывать их непосредственно в методе Render(). Однако элемент управления Popup пренебрегает этим подходом и принимает на себя непосредственное управление записью блока сценария. Это объясняется тем, что в данном случае обычное поведение, при котором один блок сценария создается независимо от количества элементов управления PopUp, помещаемых на странице, не подходит. Напротив, требуется, чтобы при добавлении более одного элемента управления PopUp страница содержала отдельный блок для каждого элемента управления. Это позволяет создавать страницы, которые выводят на экран несколько всплывающих окон.

Если требуется усовершенствовать компонент Popup, можно добавить дополнительные свойства. Например, можно было бы добавить свойства, позволяющие указывать позицию, в которой окно будет выведено на экран. Некоторые веб-сайты используют рекламные объявления, которые не появляются в течение нескольких секунд. Для рассматриваемого компонента этот подход можно было бы реализовать добавлением таймера JavaScript (и дополнительного свойства, позволяющего указать время ожидания в секундах). Стоит повториться: основная идея состоит в том, чтобы предоставить разработчику страницы аккуратный объект, с помощью которого можно программировать, и возможность использования методов визуализации для генерирования необходимого JavaScript-кода в странице.

Динамически меняющиеся кнопки

Для обеспечения этого эффекта динамическая кнопка обычно состоит из дескриптора , который обрабатывает JavaScript-события onclick, onmouseover и onmouseout. Эти события будут вызывать функцию, которая меняет изображения для текущей кнопки, как показано в следующем примере:

В этом случае сконфигурированный дескриптор выглядел бы следующим образом:

Класс RollOverButton предоставляет два свойства - URL-адрес для исходного изображения и URL-адрес для изображения, которое должно быть выведено, когда пользователь перемещает курсор мыши над кнопкой. Ниже приведены определения этих свойств:

Теперь нужно заставить элемент управления генерировать клиентский код JavaScript, который будет отвечать за смену этих двух изображений. В данном случае весьма вероятно, что на одной странице окажется сразу несколько экземпляров RollOverButton. Это означает, что блок сценария понадобится зарегистрировать со специфичным для элемента управления ключом, чтобы независимо от количества добавляемых кнопок существовал только один экземпляр функции. По соглашению этот блок сценария регистрируется за счет переопределения метода OnPreRender(), который вызывается непосредственно перед началом процесса визуализации, как показано в следующем примере:

Помните, что поскольку класс RollOverButton является производным от WebControl и использует в качестве базового дескриптора, он уже обладает средствами для вывода дескриптора . Единственные части, которые нужно предоставить - это атрибуты, такие как имя и src. Кроме того, необходимо обработать событие onclick, чтобы выполнить обратную отправку страницы, и события onmouseover и onmouseout, чтобы обеспечить смену изображений. Это можно сделать, переопределив метод AddAttributesToRender() следующим образом:

Метод Page.ClientScript.GetPostBackEventReference() возвращает ссылку на клиентскую функцию __doPostBack(). Используя эти сведения, можно построить элемент управления, который инициирует обратную отправку. Понадобится также обязательно указать атрибут идентификатора для своего элемента управления, чтобы сервер мог его идентифицировать как источник обратной отправки.

В заключение необходимо создать метод RaisePostBackEvent(), который требуется интерфейсом IPostBackEventHandler, и использовать его для генерации серверного события, как показано в следующем коде:

На рисунке ниже показана страница с двумя динамическими кнопками:

Использование динамической кнопки

Один из способов усовершенствования этого элемента управления - добавление предварительной загрузки изображения, чтобы динамическое изображение загружалось при первой визуализации страницы сначала (а не при перемещении курсора мыши над изображением). Без этого может наблюдаться задержка при первом наведении курсора мыши на кнопку.

Простейший способ выполнения предварительной загрузки состоит в создании сценария, который запускается при загрузке страницы. Этот сценарий должен создавать JavaScript-объект Image и устанавливать свойство Image.src для указания изображения, предварительную загрузку которого требуется выполнить. (При наличии нескольких изображений, которые должны быть предварительно загружены, можно просто присвоить свойству src изображения друг за другом.)

Объект Image фактически не используется в странице, но предварительно загруженные файлы изображений будут автоматически сохранены в кэше браузера. При указании этого же URL-адреса в другом месте страницы (например, в функции swapImg()), будет использоваться кэшированная версия.

Ниже приведен код, который потребуется добавить в метод OnPreRender() для реализации предварительной загрузки страницы:

Читайте также: