C# ASP.NET MVC5通过传递参数从jQuery启动动态文件下载

C# ASP.NET MVC5通过传递参数从jQuery启动动态文件下载,c#,jquery,asp.net,asp.net-mvc,C#,Jquery,Asp.net,Asp.net Mvc,在asp mvc 5中,我下载了以下代码: //jQuery $(document).on('click', "#download_export", function (e) { window.location = url_download; }); //c# public FileResult GetFile() { return File(Encoding.UTF8.GetBytes("dfdfdf dfssdfdfs")

在asp mvc 5中,我下载了以下代码:

//jQuery
 $(document).on('click', "#download_export", function (e) {
        window.location = url_download;
    });

//c#
 public FileResult GetFile()
        {
            return File(Encoding.UTF8.GetBytes("dfdfdf dfssdfdfs"),
                   "text/plain",
                    "test.txt");
        }
它工作并触发在客户端浏览器上下载txt文件

我想通过从控制器传递参数上的文件内容来做同样的事情

我试过:

    $(document).on('click', "#download_export", function (e) {
     $.get(url_download,
            {
                content : 'this is my content'
            }
            , function (data) {
                     console.log('works')
        });
   });

 public FileResult GetFile(string content)
        {
            return File(Encoding.UTF8.GetBytes(content),
                   "text/plain",
                    "test.txt");
        }
我在调试器中看到,已达到操作,但不会触发下载


你知道怎么做吗?

恐怕你不能用ajax下载文件。 由于安全原因,不允许javascript访问本地系统文件。想象一下,来自远程站点的js试图窃取你电脑上的文件

尝试:

或者您可以在页面上创建一个隐藏的iframe来下载文件,以避免更改当前窗口的位置

$(document).on('click', "#download_export", function (e) {
            $("#yourIframe").attr("src",url_download + "?content=this is my content");
        });

如果您想要
动态下载
,那么您可以使用->$.filedownload jquery插件来实现这些目的。简单用法:

var promise = $.fileDownload(url_download+"?content=yourContentHere");

此处-
公共文件结果GetFile(字符串内容)
-调试时内容的值是多少?
var promise = $.fileDownload(url_download+"?content=yourContentHere");