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

我不知道,但看起来您正在动态创建文件?如果您有文件的路径,则可以使用与此类似的内容来下载文件。这对我有用:

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 回答
2

您不能使用 AJAX 从主 HTML 响应下载文件。

一种方法是使用不可见的 IFrame,使 ajax 调用刷新 iframe 并将 IFrame 的 src 设置为您要发送的文件。

于 2012-04-19T11:39:17.347 回答
0

选项1:使用内置的ActionResults,例如FilePathResult、FileStreamResult、FileContentResult(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 回答