Asp.net mvc 3 从MVC3导出CSV文件-Internet Explorer问题
我正在尝试为我拥有的一些数据创建CSV导出。看起来很简单,在Firefox和Chrome中工作得很好,但是在InternetExplorer中我收到一条消息说文件无法下载。没有其他错误消息,Visual Studio中没有中断,也没有我可以找到的调试信息 这是我的密码。也许我做错了什么Asp.net mvc 3 从MVC3导出CSV文件-Internet Explorer问题,asp.net-mvc-3,csv,download,internet-explorer-9,Asp.net Mvc 3,Csv,Download,Internet Explorer 9,我正在尝试为我拥有的一些数据创建CSV导出。看起来很简单,在Firefox和Chrome中工作得很好,但是在InternetExplorer中我收到一条消息说文件无法下载。没有其他错误消息,Visual Studio中没有中断,也没有我可以找到的调试信息 这是我的密码。也许我做错了什么 public ActionResult ExportStudentsCSV(IEnumerable<Student> students) { MemoryStream output = new
public ActionResult ExportStudentsCSV(IEnumerable<Student> students) {
MemoryStream output = new MemoryStream();
StreamWriter writer = new StreamWriter(output, System.Text.Encoding.UTF8);
writer.WriteLine("Username,Year Level,School Name,State,Date Joined");
foreach (Student student in students) {
writer.WriteLine(
"\"" + student.username
+ "\",\"" + student.year_level
+ "\",\"" + student.SchoolName
+ "\",\"" + student.state
+ "\",\"" + student.join_date
+ "\""
);
}
writer.Flush();
output.Seek(0, SeekOrigin.Begin);
return File(output, "text/csv", "Students_" + DateTime.Now.ToShortDateString().Replace('/', '-') + ".csv");
}
可能与内容类型/内容配置有关,因为IE需要遵循标准
检查可能与内容类型/内容处理有关,因为IE在需要时遵循标准
签出您可能需要添加内容处置标题 在
ExportStudentsCSV
函数中,返回前:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "filename.csv";
Response.AddHeader("Content-Disposition", cd.ToString());
或者,如果您想简单介绍一下(与上述内容相同):
您可能需要添加内容处置标头 在
ExportStudentsCSV
函数中,返回前:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "filename.csv";
Response.AddHeader("Content-Disposition", cd.ToString());
或者,如果您想简单介绍一下(与上述内容相同):
回答我自己的问题似乎有点不靠谱,但我认为我的经验可能会对某些人有所帮助。我做了一些进一步的挖掘,发现了一种完全替代的方法,使用DataTables和从FileResult继承的特定CsvActionResult来完成这项工作。
请看以下要点:回答我自己的问题似乎有点不靠谱,但我认为我的经验可能会对某些人有所帮助。我做了一些进一步的挖掘,发现了一种完全替代的方法,使用DataTables和从FileResult继承的特定CsvActionResult来完成这项工作。
请参阅本文要点:这对IE很有效,但现在Chrome不会下载,因为它显然接收到多个内容处置头,并且不允许。这对IE很有效,但现在Chrome不会下载,因为它显然接收到多个内容处置头,并且不允许。如果连接是SSL,IE7要求设置的内容长度头不是由File或FileContentResult设置的。我相信MVC3和IIS7会在幕后为您解决这个问题。但是,当SSL连接上没有内容长度头时,使用IE7在IIS 6上下载文件会导致问题。如果连接是SSL,IE7要求设置内容长度头,而不是按file或FileContentResult设置。我相信MVC3和IIS7会在幕后为您解决这个问题。但是,当SSL连接上没有内容长度头时,使用IE7在IIS 6上下载文件会导致问题。
Response.AddHeader("Content-Disposition", "attachment;filename=filename.csv");