2010-10-26 25 views
10

He creado un evento de calendario básico usando DDay.iCal, cuando hago clic en el enlace "Agregar al calendario" produzco un evento y luego lo envío al cliente.Enviando evento ICalendar al cliente mientras continúo ejecutando su código

Básicamente, mi aplicación funciona así.

  1. un usuario se conecta.
  2. Selecciona una fecha específica.
  3. libros un intervalo de tiempo específico
  4. hace clic en el "Añadir al calendario" enlace

enviar el evento se lleva a cabo mediante el uso de Response.Write() que envía el siguiente para el cliente:

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

Los trabajos anteriores aletas, pero me exige primero reservar el evento, luego manualmente y luego hacer clic en el enlace "Agregar al calendario".

Quiero combinar los pasos 3 y 4. Pero al intentar hacerlo, la reserva de eventos se guarda en la base de datos pero la pantalla no se actualiza.

¿Hay una manera "simple" de evitar esto?

Respuesta

1

Debe configurar un HttpHandler simple para publicar la respuesta y luego hacer un Response.Redirect() en ella.

He hecho un trabajo similar antes con la integración del formato vcard en una sección de nuestra gente de un sitio web. Estos artículos deberían indicarle todo lo que necesita para configurar HttpHandler: simplemente reemplace el código vcard con su código ical.

Al redirigir al manejador de iCal se acaba al instante que aparezca el cuadro de descarga, que no será llevado a una página en blanco, el usuario se deja en la misma página.

1

Asegúrese de borrar su respuesta (Response.Clear) antes de enviar la información de respuesta de iCal. Finalmente, finalice su respuesta (Response.End) antes de que se pueda emitir cualquier otro contenido. Desde el punto de vista del uso final, esto producirá el mismo resultado al usar un HttpHandler sin la molestia.

Cuestiones relacionadas