我有一个带有 C# 控制器的程序,该控制器使用
StringBuilder
写入 CSV 文件,单击该文件即可下载。
这是我的 C# 函数:
public ActionResult GenerateCSV()
{
StringBuilder csvContent = new StringBuilder();
string fileName = "CSVTest.csv";
byte[] csvData = Encoding.UTF8.GetBytes(csvContent.ToString());
return File(csvData, "text/csv", fileName);
}
我的html中的标签:
<a href ="/MyAccount/GenerateCSV" download ="Report.csv" class="btn btn-primary">Generate »</a>
我现在遇到的问题是,当我点击
Generate
时,我返回的 StringBuilder
中没有任何数据,而是有一堆随机 html 代码被写入我的代码中,我假设问题在于返回File
。如果有人可以帮助我找到返回数据的替代方法,以便它被 <a>
标签拾取,我将不胜感激。
您需要在控制器上返回正确的类型,在本例中为
FileResult
,您的方法应如下所示:
public FileResult GenerateCSV()
{
StringBuilder csvContent = new StringBuilder();
string fileName = "CSVTest.csv";
byte[] csvData = Encoding.UTF8.GetBytes(csvContent.ToString());
//Send the File to Download.
return File(csvData , "text/csv", "Report.csv");
}
在这种情况下,您的
download
中不需要
<a>
标签
<a href ="/MyAccount/GenerateCSV" class="btn btn-primary">Generate »</a>