Что такое хорошая настройка для обработки сообщений в стиле «флеш» в ASP.NET - PullRequest
1 голос
/ 08 декабря 2008

Я создаю веб-сайты ASP.NET 2.0, и в настоящее время у меня есть несколько собственных сборок для DAL, некоторые бизнес-объекты и другие общие материалы. Я собрал базовый набор объектов для обработки сообщений в пользовательском интерфейсе (то есть ошибки и другие сообщения о состоянии). Он состоит из:

  • StatusMessage , который имеет свойство text и свойство color для описания отображаемого сообщения. Он также имеет статический метод Send, который создает свой экземпляр и помещает его в переменную Session.

  • StatusMessageDisplay , который в основном является объектом Label с методом Refresh, переопределенным для получения StatusMessage из сеанса, очистки переменной Session и отображения сообщения.

В целом это сработало довольно хорошо. Однако есть несколько вещей, которые мне не нравятся:

  1. Он может обрабатывать только одно сообщение за раз, если два сообщения отправляются до их отображения, первое теряется. Я мог бы создать список сообщений для отображения, но я не уверен, что хочу начать создавать списки в объекте Session.

  2. Он привязан к Session и, следовательно, HttpContext. Я стараюсь не вкладывать много в объект Session, а с HttpContext сложно работать для тестирования. В настоящее время я обертываю HttpContext в другой объект, который я могу использовать для тестирования

  3. В моей текущей реализации, если сообщение передается из запроса AJAX, сообщение отображается с опозданием (следующий запрос синхронизации), поскольку элемент управления StatusMessageDisplay не поддерживает / запускает AJAX.

Прежде чем я начну опираться на то, что я должен исправить эти проблемы, я хотел бы узнать, что другие сочли полезным для этого. Что мне действительно нужно, так это что-то похожее на flash-объект в Rails или, может быть, лучшую альтернативу?

Ответы [ 2 ]

1 голос
/ 08 декабря 2008

Использовать List<StatusMessage> в сеансе.

0 голосов
/ 08 декабря 2008

Чтобы сообщение обновлялось при любом вызове, поместите его в собственное UpdatePanel с RenderMode, установленным в Always.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...