7

目前,用户添加了一个“新的互联网日历”,但它是 ICS 文件的一次性下载。我希望用户单击一个按钮以将他的个人日历添加为 Outlook 订阅。我想要自动更新的“网络日历订阅”

与 SharePoint 中一样,名为“连接到 Outlook”的按钮会将您正在查看的日历作为自动同步日历添加到 Outlook 中。

4

1 回答 1

6

在 C# 中创建 iCal这个 CodeProject 帖子告诉我你应该使用DDay iCal 库

DDay.iCal 是用于 .NET 2.0 及更高版本 Silverlight 的 iCal (RFC 5545) 类库。它旨在尽可能符合 RFC 5545,同时旨在与流行的日历应用程序兼容,如 Apple iCal、Outlook 2007 等。

iCal + MVC + DDay.iCal的一些示例代码

public ActionResult iCalendar(string DownloadFileName)
{
    DDay.iCal.iCalendar iCal = new DDay.iCal.iCalendar();

    Event evt = iCal.Create<Event>();
    evt.Start = iCalDateTime.Today.AddHours(8);
    evt.End = evt.Start.AddHours(18); // This also sets the duration
    evt.Description = "The event description";
    evt.Location = "Event location";
    evt.Summary = "18 hour event summary";

    evt = iCal.Create<Event>();
    evt.Start = iCalDateTime.Today.AddDays(5);
    evt.End = evt.Start.AddDays(1);
    evt.IsAllDay = true;
    evt.Summary = "All-day event";

    ISerializationContext ctx = new SerializationContext();
    ISerializerFactory factory = new DDay.iCal.Serialization.iCalendar.SerializerFactory();
    IStringSerializer serializer = factory.Build(iCal.GetType(), ctx) as IStringSerializer;

    string output = serializer.SerializeToString(iCal);
    var contentType = "text/calendar";
    var bytes = Encoding.UTF8.GetBytes(output);

    return File(bytes, contentType, DownloadFileName);
}
于 2013-05-29T11:45:45.527 回答