単純なics(カレンダー)アイテムを作成し、それをコントローラーアクションを介して送り返す、単純なMVCコントローラーアクションを作成しました。次のように:
public object GenerateICS(int myID)
{
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Uri eventLink = new Uri("http://localhost:");
evt.IsAllDay = false;
evt.Start = new iCalDateTime(DateTime.Now);
evt.End = new iCalDateTime(DateTime.Now.AddDays(3));
evt.Summary = "MySummary";
evt.Url = eventLink;
evt.Description = "You know it";
Response.ContentType = "text/v-calendar";
Response.AddHeader("content-disposition", "attachment; filename=" + "Event" + ".ics");
iCalendarSerializer serializer = new iCalendarSerializer(iCal);
string result = serializer.SerializeToString(iCal);
Response.Write(result);
return Response;
}
したがって、Webサイトを実行している状態で、次の場所に移動すると、次のようになります。
http://localhost:21312/GenerateICS?myID=1
これにより、icsファイルサーバー側が生成されてクライアントに返されるため、「localhostからblah.icsを開きますか?」というメッセージが表示されます。これは完全に私が欲しいものです。
私の問題は、JavaScriptから実行することでまったく同じことをどのように達成するかです。私は次のajax呼び出しを持っています:
$.ajax({
url: "app/GenerateICS",
data: { myID: 1 },
success: function (data) {
//call is successfully completed and we got result in data
alert(data);
},
error: function (xhr, ajaxOptions, thrownError) {
//some errror, some show err msg to user and log the error
alert(xhr.responseText);
}
});
これにより、MVCコントローラーが完全に実行されます。ただし、成功関数へのics応答を返します。ajaxを使用してコントローラーを呼び出すにはどうすればよいですか?手動で行う場合の方法を説明するときにファイルがダウンロードされるようにするにはどうすればよいですか?
ありがとう