在继续运行代码的同时将ICalendar事件发送到客户端

时间:2010-10-26 08:40:24

标签: c# asp.net response.write

我使用DDay.iCal构建了一个基本日历事件,当我点击“添加到日历”链接时,我会生成一个事件,然后将其发送给客户端。

基本上,我的应用程序就像这样。

  1. 用户登录。
  2. 选择特定日期。
  3. 预订特定时段
  4. 点击“添加到日历”链接
  5. 使用Response.Write()向客户端发送以下内容来发送事件:

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

    以上是鳍,但它需要我先手动预订,然后点击“添加到日历”链接。

    我想合并步骤3和4.但是当尝试这样做时,事件预订会保存到数据库中,但屏幕不会刷新。

    有没有一种“简单”的方法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

您需要设置一个简单的HttpHandler来发布回复,然后在其中执行Response.Redirect()。

在将vcard格式集成到网站的人员部分之前,我做过类似的工作。这些文章应该告诉您设置HttpHandler所需的一切 - 只需用你的代码替换vcard代码。

当您重定向到ical处理程序时,它会立即弹出下载框,您将不会被带到空白页面,用户将被保留在同一页面上。

答案 1 :(得分:1)

确保在发送iCal回复信息之前清除回复(Response.Clear)。最后,在发布任何其他内容之前结束您的回复(Response.End)。从最终使用的角度来看,这将产生与使用HttpHandler同样没有麻烦的相同结果。