1

単純な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を使用してコントローラーを呼び出すにはどうすればよいですか?手動で行う場合の方法を説明するときにファイルがダウンロードされるようにするにはどうすればよいですか?

ありがとう

4

3 に答える 3

1

リンクをくれた@heads5150に感謝します。

これは、ブラウザの場所を次のように設定しただけの事実でした。

document.location.href = "app/GenerateICS?...";
于 2012-10-31T02:15:45.103 に答える
0

あなたのajaxの成功では、これを入れてください

  Window.location.href='yourICSfileLink';

これにより、ajaxがファイルを作成して成功するとブラウザがリダイレクトされ、ファイルを開くか、この場合はicsファイルをダウンロードします。これはajaxが成功するたびに発生することに注意してください。

于 2012-10-31T01:59:43.703 に答える
0

私はちょうどjsからのダウンロードを探していましたが、答えは一般的にiframeの作成とそれを介した実行に関連しています。そうするjqueryプラグインもいくつかあります。いくつかの例:

Javascript/jQueryを使用してファイルをダウンロードする

http://johnculviner.com/category/jQuery-File-Download.aspx

あなたがそれをググると、あなたはそのトピックについてさらに多くを見つけることができます。

于 2012-10-31T02:28:19.347 に答える