Отправка события ICalendar клиенту, продолжая выполнять код

Я создал базовое событие календаря, используя DDay.iCal, когда я нажимаю ссылку "Добавить в календарь" , я создаю событие, а затем отправляет его клиенту.

В принципе, мое приложение работает так.

  • Пользователь регистрируется.
  • Выбирает определенную дату.
  • Загружает определенный временной интервал
  • Нажмите ссылку "Добавить в календарь"

Отправка события выполняется с помощью Response.Write(), который отправляет клиенту следующее:

Response.ContentType = "text/calendar";
Response.AddHeader("Content-disposition", "attachment; filename=appointment.ics");
Response.Write(iCalString);

Вышеупомянутые работы ребрики, но для этого мне нужно сначала записать событие вручную, а затем щелкнуть ссылку "Добавить в календарь" .

Я хочу объединить шаги 3 и 4. Но при попытке сделать это бронирование событий будет сохранено в базе данных, но экран не обновится.

Есть ли "простой" способ обойти это?

Ответ 1

Вам нужно настроить простой HttpHandler для публикации ответа, а затем выполнить Response.Redirect().

Ранее я делал аналогичную работу, интегрируя формат vcard в раздел наших людей на веб-сайте. Эти статьи должны сообщать вам все, что вам нужно, чтобы настроить HttpHandler - просто замените код vcard на свой код.

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

Ответ 2

Перед отправкой информации об ответе iCal убедитесь, что вы очистили свой ответ (Response.Clear). Наконец, завершите свой ответ (Response.End), прежде чем выйдет какой-либо другой контент. С точки зрения конечного использования это приведет к тому же результату использования HttpHandler без хлопот.