C# 设置应用程序以在asp.net MVC中下载文件-下载返回时不会发生任何事情

C# 设置应用程序以在asp.net MVC中下载文件-下载返回时不会发生任何事情,c#,asp.net-mvc,C#,Asp.net Mvc,我意识到以前有人问过关于这个问题的各种说法。我找到的最好答案是 但是,试图遵循这些指示并没有解决我的问题 长话短说,文件被正确检索,名称、路径和mime类型都正确,没有抛出错误。javascript在客户端也不会抛出任何错误 获取文件的C#代码如下所示: [HttpPost] public FileResult DownloadFile(int fileId) { ... get the file and file info return File(fileBytes, fil

我意识到以前有人问过关于这个问题的各种说法。我找到的最好答案是

但是,试图遵循这些指示并没有解决我的问题

长话短说,文件被正确检索,名称、路径和mime类型都正确,没有抛出错误。javascript在客户端也不会抛出任何错误

获取文件的C#代码如下所示:

[HttpPost]
public FileResult DownloadFile(int fileId)
{
    ... get the file and file info
    return File(fileBytes, fileMimeType, fileName);
}
... set up for post here
$.post(settings.actions.downloadFile, {fileId: fileIdVar});
javascript如下所示:

[HttpPost]
public FileResult DownloadFile(int fileId)
{
    ... get the file and file info
    return File(fileBytes, fileMimeType, fileName);
}
... set up for post here
$.post(settings.actions.downloadFile, {fileId: fileIdVar});
正如我刚才所说的,帖子回来了,什么也没发生

我试着把帖子改成get,结果是一样的

我尝试设置一个回调函数,将document.location.href设置为下载返回时的某个随机url,但这只会将我的浏览器转到我指定的页面。从我提供的链接中给出的解释,我无法理解,即

“…使用document.location.href=…通知浏览器转到url下载文件。它将看到内容处置标题,并将其显示为下载而不是页面…”

我应该把我的浏览器指向什么。document.location.href不接受数据,因此我无法单独使用它,使用不带document.location.href的post不会返回任何内容

我可能做错了什么


非常感谢响应者抽出时间

正如你链接的帖子中的答案所说,你不能通过AJAX下载文件

要设置位置,请更改您的操作以响应
GET
请求,并将您的文件id添加到查询字符串中,或设置处理该请求的路由。此外,您可能已经在执行此操作,但需要确保将
内容处理
标题值设置为
附件

window.location.href=settings.action.downloadFile+”?fileId=“+fileIdVar

由于您使用的是jQuery,因此可以使用来为您构建参数


您还可以研究一个提供“类似AJAX”体验的应用程序。

我认为问题在于文章是通过AJAX完成的。如果你做一篇标准的文章,你可能可以毫无问题地下载这个文件,这听起来是个好主意,Queti,但是我如何从javascript中做到这一点呢?也就是说,我如何在不使用$.post(使用ajax)的情况下发布?你是说我应该设置一个不同的机制,比如html中的表单?是的,用POST方法设置表单。如果在表单发送到服务器之前仍然需要进行某种验证或修改数据,您仍然可以这样做,只需使用
$(form).submit()
。再次感谢您的帮助,Queti。出于完整性考虑,是否可以动态创建一个表单,让我下载一个文件,然后在javascript中提交该表单?否决票是什么?不会是。。。政治…会吗?那太傻了。谢谢你的帮助,Rfvgyhn!最终对我有用的是按照您的建议更改document.location.href,而不使用ajax调用。这一行允许我正确下载文件:document.location.href=settings.actions.downloadFile+“?fileId=“+fileIdVar;