c#MVC路径中的非法字符

时间:2014-01-16 20:38:00

标签: c# asp.net-mvc csv

我正在生成一个CSV文件并尝试使用MVC将其发送到网上,但我一直收到Illegal characters in path例外。

我尝试过使用不同的方法,例如引用列,将\ n更改为Environment.NewLine,但问题的原因仍然无法解决。

控制器代码:

string csv = "";
csv = "Name, Sales, Qty, Cost, Profit" + "\n";
foreach (var item in model.ReportResults.Items) {
    csv += item.ToCsv();
}

return File(csv, "text/csv", "myfile.csv");

ToCsv方法:

internal string ToCsv() 
{
    return "" + Name + "" + "," + Sales.ToString() + "," + Qty.ToString() + "," + Cost.ToString() + "," + Profit.ToString() + "\n";
}

生成的CSV文件的快照:

Name, Sales, Qty, Cost, Profit
Tyranids,4979.29,182,3375.00,1604.29
Space Marines,2127.88,87,948.09,1179.79
Tau Empire,1584.01,40,0.00,1584.01
Eldar,1164.04,44,925.38,238.66
Imperial Guard,1005.79,34,790.10,215.69

1 个答案:

答案 0 :(得分:10)

您正在使用File()的错误重载。 csv是一个字符串which tells it that you're looking for a file by that name。当然,您的整个CSV数据都不是有效的文件名,因此是错误。

您希望返回byte[]作为“文件”的实际内存数据,而不是字符串。也许是这样的:

var csvBytes = Encoding.ASCII.GetBytes(csv);
return File(csvBytes, "text/csv", "myfile.csv");

(或者您想要使用的任何字符编码。)