Asp.net mvc 使用JQuery/ASP MVC发布表单并获取文件结果

Asp.net mvc 使用JQuery/ASP MVC发布表单并获取文件结果,asp.net-mvc,forms,Asp.net Mvc,Forms,我有一个表单,它通过JQuery将数据发布到控制器,然后控制器返回一个FileResult。我有一个连接了JQuery的href,它成功地发布到控制器。FileResult已生成,但客户端似乎没有收到它。这方面的标准方法是什么?即使您能够以javascript接收文件,您会如何处理它?是否将其保存到客户端计算机?你不能。请求使用AJAX返回文件的控制器操作是没有意义的。只需创建一个标准链接,让用户决定如何处理下载的文件 您只需设置正确的HTTP头: public ActionResult Dow

我有一个表单,它通过JQuery将数据发布到控制器,然后控制器返回一个FileResult。我有一个连接了JQuery的href,它成功地发布到控制器。FileResult已生成,但客户端似乎没有收到它。这方面的标准方法是什么?

即使您能够以javascript接收文件,您会如何处理它?是否将其保存到客户端计算机?你不能。请求使用AJAX返回文件的控制器操作是没有意义的。只需创建一个标准链接,让用户决定如何处理下载的文件

您只需设置正确的HTTP头:

public ActionResult Download()
{
    return File(@"c:\foo.pdf", "application/pdf", "foo.pdf");
}
然后生成您的下载链接:

<%= Html.ActionLink("download file", "download") %>

即使您能够以javascript接收文件,您会如何处理它?是否将其保存到客户端计算机?你不能。请求使用AJAX返回文件的控制器操作是没有意义的。只需创建一个标准链接,让用户决定如何处理下载的文件

您只需设置正确的HTTP头:

public ActionResult Download()
{
    return File(@"c:\foo.pdf", "application/pdf", "foo.pdf");
}
然后生成您的下载链接:

<%= Html.ActionLink("download file", "download") %>


这很有道理。当他们点击下载文件时,我不想触发一个完整的页面回发。是否可以打开另一个窗口?为了澄清,文件是根据发布的数据创建的。它不是静态文件。@Kenoyer,如果您正确设置响应标题,它将不会导航到该页。@@Kenoyer,请参阅我的更新,该更新说明了如何返回一个文件,该文件将自动提示用户保存该文件,而无需导航到当前页。这很有意义。当他们点击下载文件时,我不想触发一个完整的页面回发。是否可以打开另一个窗口?为了澄清,文件是根据发布的数据创建的。它不是一个静态文件。@Kenoyer,如果您正确设置响应标题,它将不会导航到该页。@@Kenoyer,请参阅我的更新,该更新说明了如何返回一个文件,该文件将自动提示用户保存它,而无需导航到当前页。