2010-10-26 11 views
10

J'ai créé un événement de base du calendrier en utilisant DDay.iCal, lorsque je clique sur le lien "Ajouter au calendrier". Je produis un événement et l'envoie ensuite au client.Envoyer l'événement ICalendar au client tout en continuant à exécuter votre code

Fondamentalement, mon application fonctionne comme ceci.

  1. Un utilisateur se connecte à.
  2. Sélectionne une date précise.
  3. Livres Une tranche de temps spécifique
  4. Clicks « Ajouter au calendrier » lien

L'envoi de l'événement se fait à l'aide Response.Write() qui envoie les éléments suivants au client:

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

Les travaux ci-dessus ailerons mais cela me demande de réserver d'abord l'événement puis manuellement, puis de cliquer sur le lien "Ajouter au calendrier".

Je veux fusionner les étapes 3 et 4. Mais lorsque vous essayez de le faire, la réservation d'événements est enregistrée dans la base de données, mais l'écran n'est pas actualisé.

Existe-t-il un moyen "simple" de contourner ce problème?

Répondre

1

Vous devez configurer un simple HttpHandler pour publier la réponse, puis y faire un Response.Redirect().

J'ai déjà fait un travail similaire en intégrant le format vcard dans une section people d'un site web. Ces articles devraient vous dire tout ce dont vous avez besoin pour configurer le HttpHandler - il suffit de remplacer le code vcard avec votre code ical.

Lorsque vous redirigez dans le gestionnaire ical il sera juste instantanément apparaître la boîte de téléchargement, vous ne serez pas pris à une page vide, l'utilisateur reste sur le même page.

1

Assurez-vous d'effacer votre réponse (Response.Clear) avant d'envoyer les informations de réponse iCal. Enfin, terminez votre réponse (Response.End) avant que tout autre contenu puisse être émis. Du point de vue de l'utilisation finale, cela produira le même résultat en utilisant un HttpHandler sans les tracas.