現在、ユーザーは「新しいインターネット カレンダー」を追加していますが、これは ICS ファイルの 1 回限りのダウンロードです。ユーザーがボタンをクリックして、個人の予定表をサブスクリプションとして Outlook に追加してもらいたいです。自動更新の「インターネットカレンダー購読」が欲しい。
SharePoint と同様に、[Outlook に接続] というボタンを使用すると、表示している予定表が自動的に同期される予定表として Outlook に追加されます。
現在、ユーザーは「新しいインターネット カレンダー」を追加していますが、これは ICS ファイルの 1 回限りのダウンロードです。ユーザーがボタンをクリックして、個人の予定表をサブスクリプションとして Outlook に追加してもらいたいです。自動更新の「インターネットカレンダー購読」が欲しい。
SharePoint と同様に、[Outlook に接続] というボタンを使用すると、表示している予定表が自動的に同期される予定表として Outlook に追加されます。
C# での iCals の作成とこの CodeProject の投稿では、 DDay iCal Libraryを使用する必要があることがわかります。
DDay.iCal は、.NET 2.0 以降、Silverlight 用の iCal (RFC 5545) クラス ライブラリです。Apple iCal、Outlook 2007 などの一般的なカレンダー アプリケーションとの互換性を目標にしながら、可能な限り RFC 5545 に準拠することを目指しています。
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);
}