我想让用户下载我在网站其他地方显示的数据作为报告。
我使用的是Asp.net核心2.1 rc1 MVC app。
我的狡猾计划是创建一个特殊视图,将数据呈现为制表符分隔文本,并使用响应标题使浏览器下载而不是显示HTML。这几乎完美无缺。
我的" HttpGet"控制器中的代码如下所示:
Response.Headers.Add("Content-disposition", "attachment; filename=export.tsv");
return View(MyModel);
我的剃刀视图如下:
@Model IEnumerable<MyModel>
@{
Layout = null;
String LineBreak = Environment.NewLine;
String Tab = "\t";
}
Header1 Header2 ...
@if (Model.Count > 0)
{
foreach (MyModel myModel in Model)
{
@myModel.Field1@Html.Raw(@Tab)@myModel.Field2 ... @Html.Raw(@LineBreak)
}
}
这非常有效,除了这个丑陋的错误消息显示为文件中的第一行:
System.Collections.Generic.List`1[MyApp.Models.MyModel] IEnumerable<MyModel>
文件的其余部分正是我所需要的。
有谁知道如何删除此邮件?或者如果我的一般方法有问题......
此处提供完整项目:https://github.com/under3415/ExportError/(只需点击下载链接并检查文件)
答案 0 :(得分:1)
您已撰写@Model
,而正确的语法为@model
(小写 - 它区分大小写)。
第一行@model
指令指定模型类型。 @Model
取消引用实际的模型实例。您所看到的是ToString
代表。
答案 1 :(得分:0)
您收到此错误是因为您使用模型返回视图(MyModel); 返回视图,您应该使用 FileResult
以下是完整的说明 Download file of any type in Asp.Net MVC using FileResult?