2010-11-10 2 views

ответ

4

Вы должны создать iCal feed, на который могут подписаться большинство клиентов. Используйте контроллер FileStreamResult в своем контроллере, чтобы отправить его клиентам. Разберитесь со спецификацией ICS, он начинает как этот

BEGIN:VCALENDAR PRODID:-//{Calender of something}//NONSGML v1.0//EN 
VERSION:1.0 
CALSCALE:GREGORIAN 
METHOD:PUBLISH 
X-WR-CALNAME:{Name} 
X-ORIGINAL-URL:{The Url obviously} 
X-WR-CALDESC:{Calendar of Events For a new intranet application} 

и заканчивается END:VCALENDAR. А вот события

BEGIN:VEVENT 
DTSTART:20101113 
DTEND:20101115 
DTSTAMP:20101110T154940 
CREATED:20101109T2
LAST-MODIFIED:20101109T2
UID:{unique id} 
SUMMARY:Nanaimo Artwalk 2010 (Free) 
DESCRIPTION:{Description} 
LOCATION:{Location} 
URL:{url} 
END:VEVENT 

Теперь я не знаю, формат ICS действительно хорошо, так что вы должны получить более знакомы с ним. В качестве альтернативы вы можете использовать an open-source library. Когда вы создаете фид, напишите его как результат файла.

private static FileResult iCalResult(string ics) 
{ 
    return new FileStreamResult(WriteCal(ics), "text/calendar"); 
} 

private static Stream WriteCal(string ics) 
{ 
    var content = Encoding.ASCII.GetBytes(ics); 
    var stream = new MemoryStream(content); 
    return stream; 
} 
+0

Спасибо! Я не знал, существует ли «способ перспективы» или он должен генерироваться iCal. Тогда я создам iCal. –

+0

есть перспективный способ сделать это через обмен веб-сервисами, управляемый api, но это проще и больше клиент агностик. – Sevki

Смежные вопросы