asp.net – MVC 4导出到CSV – 另存为对话框在Chrome和Firefox中不起作用
| 
                         我正在尝试使用打开/保存选项将csv文件导出到用户. 我的问题是类似于how-to-force-chrome-to-open-an-open-file-dialog-when-downloading-a-file-via-as(它正在Chrome和Firefox中下载文件),我尝试了@Dev建议的解决方案,但它无法正常工作. 我编写了如下代码: – return File(new System.Text.UTF8Encoding().GetBytes(csvData),"text/csv",filename); 但是,它无法在Chrome中运行.默认情况下会下载该文件. 然后在谷歌搜索后,我找到了returning-a-file-to-view-download-in-mvc,我试图做下面的事情: – var csvData = "hello";// I am filling this variable with,y values from DB!
    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = "test",Inline = false,};
    Response.AppendHeader("Content-Disposition",cd.ToString());
    return File(new System.Text.UTF8Encoding().GetBytes(csvData),"text/csv"); 
 但它仍然是在Chrome中下载文件.然后我遇到了how-to-display-open-save-dialog-asp-net-mvc-4,其中@JooSimes提到: – 
 如果以上是真的,那么我怎样才能克服我的问题呢?如何进行打开/保存对话? 编辑1 我试图做这样的事情(得到它here): – public class ExcelResult : ActionResult
    {
        public string FileName { get; set; }
        public string Path { get; set; }
        public string Data { get; set; }
        public override void ExecuteResult(ControllerContext context)
        {
            context.HttpContext.Response.Buffer = true;
            context.HttpContext.Response.Clear();
            context.HttpContext.Response.AddHeader("content-disposition","attachment;     filename=" + FileName);
            context.HttpContext.Response.ContentType = "text/csv";
            context.HttpContext.Response.Write(new System.Text.UTF8Encoding().GetBytes(Data));
        }
    } 
 和我的控制器代码: – return new ExcelResult
                {
                    FileName = "sample.xls",Path = "",Data = csvData
                }; 
 但是,它正在下载Excel … 编辑2 尝试用HttpContext.Current.Response打开excel /// <summary>
/// Export CSV 
/// </summary>
/// <returns></returns>
public void DownloadCSV()
{
    try
    {
        var csvData = Session["CSVData"].ToString();
        byte[] getContent = new System.Text.UTF8Encoding().GetBytes(csvData);
        System.Web.HttpContext.Current.Response.ClearContent();
        System.Web.HttpContext.Current.Response.ClearHeaders();
        System.Web.HttpContext.Current.Response.Buffer = true;
        System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        System.Web.HttpContext.Current.Response.AddHeader("Content-Length",getContent.Length.ToString());
        System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition","attachment; filename=" + "testing.csv");
        System.Web.HttpContext.Current.Response.BinaryWrite(getContent);
        System.Web.HttpContext.Current.Response.Flush();
    }
    catch (Exception ex)
    {
        HttpResponseMessage message = new HttpResponseMessage()
        {
            Content = new StringContent("Error Exporting Data")
        };
        throw new System.Web.Http.HttpResponseException(message);
    }
} 
 但是,仍然没有工作! 解决方法@shubh你试过 How to force Chrome to open an “open file dialog” when downloading a file vía ASP.NET codebehind?秒解决方案他们把图像放在显示如何打开chrome对话框的地方.我有铬版本30.0.1599.101米,如果你去设置那个提前设置然后下来你会发现上面的链接答案给出的复选框,这将解决你的问题我想.如果仍然无法正常工作,那么您的浏览器可能会出现问题,只需将其更新到最新版本然后重试. 编辑1: 如果你把你的文件扩展名.xls然后它将在excel中为csv打开你需要将文件名作为FileName =“sample.csv”,然后它将以csv格式打开. Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition","attachment;filename=GridViewtoCSVExport.csv");
Response.Charset = string.Empty;
Response.ContentType = "application/text"; 
 更多检查这个http://surajdeshpande.wordpress.com/2013/09/03/export-gridview-data-to-csv-file-in-asp-net/ (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- asp.net-mvc – 已经使用相同的参数类型定义了一个名为“Cr
 - asp.net-mvc – 在ASP.NET身份中角色与声明的最佳实践
 - asp.net下经典数据库记录分页代码
 - asp.net – 在web.config文件中设置重定向
 - asp.net – Request.Url.AbsoluteUri和重写的URL
 - asp.net-mvc-2 – MVC源代码单例模式
 - asp.net – 基于函数式编程的UI
 - asp.net-mvc – ASP.NET MVC/C++#:可以使用Html.ActionLin
 - remoting和webservice有什么区别
 - ASP.NET通过自定义函数实现对字符串的大小写切换功能
 
- asp.net-mvc-3 – 使用自定义VirtualPathProvide
 - 在HiddenField asp.net中存储一个字符串数组
 - asp.net-mvc – 如何在asp.net中使用mvc构建购物
 - asp.net-mvc-3 – 如何在Razor中为Nullable创建编
 - .NET牛人应该知道些什么,我的回答
 - asp.net+ajaxfileupload.js 实现文件异步上传代码
 - asp.net-mvc-3 – 如何在页面提交ASP.Net MVC时捕
 - asp.net-mvc – 在MVC4中为ViewModel设置默认值的
 - iis-7.5 – 使用虚拟目录/应用程序在IIS中托管AS
 - 并行运行ASP.NET Webforms和ASP.NET MVC
 
