1

そのため、アクション内でファイルをダウンロード可能にするために必要なものがまだ得られません。

だから、これが私が持っているコントローラーです。クライアント側にダウンロードするファイルを受け取らないことを除いて、すべてが正常に機能しているようです。

    <HttpPost()>
    Function meetingCP(idCont As Integer, idOpp As Integer, schedule As String) As FileResult
        Dim id As Integer = 0
        Dim iCSFile As StringBuilder = New StringBuilder()
        Dim startDate As Date = schedule
        Dim endDate As Date = startDate.AddMinutes(30)

        iCSFile.AppendLine("BEGIN:VCALENDAR")
        iCSFile.AppendLine("VERSION:2.0")
        iCSFile.AppendLine("METHOD:REQUEST")

      [bla bla bla]

        iCSFile.AppendLine("DESCRIPTION:Reminder")
        iCSFile.AppendLine("END:VALARM")
        iCSFile.AppendLine("END:VEVENT")
        iCSFile.AppendLine("END:VCALENDAR")

        Dim StreamWriter As StreamWriter = New StreamWriter("C:\MvcApplication4\MvcApplication4\Content\test.ics")
        StreamWriter.WriteLine(iCSFile)
        StreamWriter.Close()


        Return File(iCSFile.ToString, "text/plain", "MeetingRequest.ics")
        'Return File(Encoding.UTF8.GetBytes(iCSFile.ToString()), "text/plain", "MeetingRequest.ics")
    End Function

そして、このアクションはajaxによって呼び出されます。それが問題かもしれませんか?

function meetCP(idCont, idOpp) {
    var meetCPSelect = ("#meettime" + idCont);
    var dateTime = $(meetCPSelect).val();
    $.ajax({
        url: '@Url.Action("meetingCP")',
        type: 'POST',
        data: { idCont: idCont, idOpp: idOpp, schedule: dateTime },
        success: function (result) { }
    });
};
4

3 に答える 3

2

メインのHTML応答からのファイルのダウンロードにAJAXを使用することはできません。

これを行う方法は、非表示のIFrameを使用し、ajax呼び出しでiframeを更新し、IFrameのsrcを送信するファイルに設定することです。

于 2012-04-19T11:39:17.347 に答える
2

わかりませんが、その場でファイルを作成しているようですね。ファイルへのパスがある場合は、これに似たものを使用してファイルをダウンロードできます。これは私のために働きます:

public ActionResult DownloadFile(string path, string fileName) {
    FileContentResult result = null;
    var file = path + fileName;
    if (System.IO.File.Exists(file)) {
        result = new FileContentResult(System.IO.File.ReadAllBytes(file), "application/pdf");
    }
    return result;
}

あなたの見解では、あなたはこのようなものが必要です:

@Html.ActionLink("Your Filename", "DownloadFile", "YourController", new { path = @item.FileLocation, fileName = @item.CurrentFileName }, new { target = "blank" })            
于 2012-04-19T11:41:55.187 に答える
0

オプション1:FilePathResult、FileStreamResult、FileContentResultなどの組み込みのActionResultsを使用する(http://weblogs.asp.net/rajbk/archive/2010/05/03/actionresult-types-in-mvc2.aspx

オプション2:カスタムActionResultを作成して、Excelファイルを返します(例:http ://www.dotnetcurry.com/ShowArticle.aspx?ID = 484&AspxAutoDetectCookieSupport = 1 )

ASP.NET MVCファイルを返すアクションを作成する方法は?

于 2012-04-19T11:45:11.713 に答える