2009-05-23 4 views

ответ

3

Давайте посмотрим на варианты:

Javascript?

Это прекрасно работает, если пользователь не отключил его.

Метатаг обновить?

Устаревший метод в пользу метода Javascript. Однако вы можете использовать его в качестве резервной копии, если пользователь отключил Javascript.

Response.Redirect (для себя)

Это не работает, так как браузер не будет показывать anyhing полезным для пользователя при перенаправлении. Кроме того, браузер перестанет запрашивать после некоторого количества переадресаций, чтобы защитить пользователя от бесконечных перенаправлений.

Server.Transfer (для себя)

Не работает либо, как код на сервере будет просто цикл без отправки ничего браузера. Эффект тот же, что и в цикле.

Ajax update panel?

Хорошо работает, если пользователь не отключил Javascript. Это в основном то же самое, что и первый вариант, только Javascript сам делает запрос, а не позволяет браузеру выполнить запрос.

2

Отметьте эту статью на Asynchronous Pages. Здесь также приведен пример из CodeProject, который включает в себя асинхронные страницы и META-REFRESH.

+0

Асинхронные страницы в ASP.Net будут выполняться в другом потоке, но не будут лучше в случае тайм-аута (тайм-ауты тайм-аута баланса нагрузки на время ожидания ASP.Net) –

0

Я бы рекомендовал использовать Ajax и отображать UpdateProgress, чтобы пользователь знал, что он все еще сбивается.

1

Вы можете найти пример реализации такого рода функций в Starter Kit Beer House - http://www.asp.net/Downloads/starter-kits/the-beer-house/.

Страницы, отправленныеNewsLetter.aspx и SendNewsLetter.aspx будут вам полезны. Это может быть излишним для вашей потребности, хотя это даже показывает прогресс в длительной операции.

1

Как насчет использования AJAX WebModalAnchor, чтобы открыть окно с кнопкой отмены?

Надеется, что это помогает,

Билл

3

Если вы можете сообщить о каком-либо прогрессе к пользователю, я, как правило, работать с asxh и вариациями forever frame. Добавьте немного jQuery UI Dialog и jQuery UI Progress Bar, и у вас есть блестящий способ привлечь внимание пользователей, когда вы делаете тяжелую работу на сервере.

Я привел пример кода в 874204, который демонстрирует технику.

Если вы не можете дать прогресс пользователю, я, как правило, по-прежнему использую диалоговое окно пользовательского интерфейса и вытаскиваю сообщение «please wait, processing ...» с веб-двумя точками, совместимыми со спиннингом gif.

+0

Прочтите свой ответ - это хороший материал. Я очень хочу попробовать. –