2010-10-26 23 views
10

Tôi đã tạo một sự kiện lịch cơ bản bằng DDay.iCal, khi tôi nhấp vào liên kết "Thêm vào lịch", tôi tạo sự kiện và sau đó gửi nó cho khách hàng.Gửi sự kiện ICalendar cho khách hàng trong khi vẫn tiếp tục chạy mã của bạn

Về cơ bản, ứng dụng của tôi hoạt động như thế này.

  1. Người dùng đăng nhập.
  2. Chọn ngày cụ thể.
  3. Sách một khe thời gian cụ thể
  4. Nhấp chuột vào "Add lịch" liên kết

Gửi sự kiện này được thực hiện bằng cách sử dụng Response.Write() mà gửi sau cho khách hàng:

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

Các công trình trên vây nhưng nó đòi hỏi tôi phải đầu tiên đặt sự kiện sau đó bằng tay và sau đó nhấp vào liên kết "Thêm vào lịch".

Tôi muốn hợp nhất các bước 3 và 4. Nhưng khi cố gắng thực hiện việc đặt chỗ sự kiện được lưu vào cơ sở dữ liệu nhưng màn hình không được làm mới.

Có cách "đơn giản" để giải quyết vấn đề này không?

Trả lời

1

Bạn cần thiết lập HttpHandler đơn giản để đăng câu trả lời và sau đó thực hiện Response.Redirect() vào đó.

Tôi đã thực hiện công việc tương tự trước đây bằng cách tích hợp định dạng vcard vào phần người của trang web. Các bài viết này sẽ cho bạn biết mọi thứ bạn cần để thiết lập HttpHandler - chỉ cần thay thế mã vcard bằng mã ical của bạn.

Khi bạn chuyển hướng vào xử lý ical nó sẽ chỉ ngay lập tức bật lên hộp tải về, bạn sẽ không được đưa đến một trang trắng tinh, người dùng còn lại trên cùng trang.

1

Đảm bảo rằng bạn xóa câu trả lời (Response.Clear) trước khi gửi thông tin phản hồi iCal. Cuối cùng, kết thúc phản hồi của bạn (Response.End) trước khi bất kỳ nội dung nào khác có thể được phát ra. Từ quan điểm sử dụng cuối cùng, điều này sẽ tạo ra kết quả tương tự khi sử dụng số HttpHandler mà không gặp rắc rối.

Các vấn đề liên quan