我使用DDay.iCal构建了一个基本日历事件,当我点击“添加到日历”链接时,我会生成一个事件,然后将其发送给客户端。
基本上,我的应用程序就像这样。
使用Response.Write()
向客户端发送以下内容来发送事件:
Response.ContentType = "text/calendar";
Response.AddHeader("Content-disposition", "attachment; filename=appointment.ics");
Response.Write(iCalString);
以上是鳍,但它需要我先手动预订,然后点击“添加到日历”链接。
我想合并步骤3和4.但是当尝试这样做时,事件预订会保存到数据库中,但屏幕不会刷新。
有没有一种“简单”的方法来解决这个问题?
答案 0 :(得分:1)
您需要设置一个简单的HttpHandler来发布回复,然后在其中执行Response.Redirect()。
在将vcard格式集成到网站的人员部分之前,我做过类似的工作。这些文章应该告诉您设置HttpHandler所需的一切 - 只需用你的代码替换vcard代码。
当您重定向到ical处理程序时,它会立即弹出下载框,您将不会被带到空白页面,用户将被保留在同一页面上。
答案 1 :(得分:1)
确保在发送iCal回复信息之前清除回复(Response.Clear
)。最后,在发布任何其他内容之前结束您的回复(Response.End
)。从最终使用的角度来看,这将产生与使用HttpHandler
同样没有麻烦的相同结果。