我正在尝试添加一个基本MvcScaffolding项目的链接,该项目从IQueryable接口输出所有数据。控制器使用Scaffold Controller Sales -Repository
构建,并且在Sale类中没有任何异常,只有几个字符串和一些整数。项目中的所有内容都按预期工作。
从我发现的帖子中,LINQtoCSV对我来说可能是一个可行的解决方案(http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library)。不幸的是,我不知道要添加什么。如果我在/ Sales /的索引页面上有一个指向/ Sales / CSV /的链接,如何通过“下载或打开”提示用户?
我还看到了这个页面(http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters),它讲述了如何构建Web API,但我无法使用MVC 4符合公司标准。
我目前在SalesController.cs
中的代码如下([DirectoryNotFoundException: Could not find a part of the path 'C:\...\Sales\CSV\LINQtoCSV.CsvContext'.]
出错):
//
// GET: /Sales/CSV/
[Authorize]
public FilePathResult CSV()
{
List<Sale> dataRows = saleRepository.All.ToList();
CsvFileDescription outputFileDescription = new CsvFileDescription
{
SeparatorChar = '\t', // tab delimited
//EnforceCsvColumnAttribute = false,
FirstLineHasColumnNames = true, // no column names in first record
FileCultureName = "en-US" // default is the current culture
};
CsvContext cc = new CsvContext();
cc.Write<Sale>(dataRows,
"output.csv",
outputFileDescription);
return File(cc.ToString(), "text/csv");
}
修改 修改了使用File()从存储库和输出创建列表的代码。
修改 这是我正在使用的修改后的代码。在模型中,我正在使用连接列表构建字符串。控制器代码如下:
[Authorize]
public FileStreamResult CSV3()
{
MemoryStream output = new MemoryStream();
StreamWriter writer = new StreamWriter(output);
saleRepository.All.ToList().ForEach(s => writer.WriteLine(s.ToStringCSV));
writer.Flush();
output.Position = 0;
return File(output, "text/csv", "report.csv");
}
答案 0 :(得分:0)