ASP.Net MVC:导出 ApiController 操作的结果
本文关键字:操作 结果 ApiController 导出 Net MVC ASP | 更新日期: 2023-09-27 17:55:39
在我的应用程序中,我有几个网格,每个网格都从ApiController
操作中获取数据源。我想为用户添加一个选项,将这些网格导出为 CSV、PDF、Excel 等。编写代码以将数据源转换为预期格式不是问题。问题是我想编写可重用的代码。目前,我对每个网格都有一个单独的操作。
我可以很容易地添加一个新的导出控制器,其中包含调用与ApiController
相同逻辑的匹配操作,但这意味着如果我有五个ApiController
操作,我将需要五个额外的Controller
操作。
我想知道是否有办法我可以进行单个导出Controller
操作,但以某种方式将ApiController
的详细信息传递给它。
有什么建议吗?
这是我发现的:
我可以让它与ByteArrayContent
一起使用,而不是将StreamContent
作为内容返回。
[HttpGet]
public HttpResponseMessage Generate()
{
var stream = new MemoryStream();
// processing the stream.
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(stream.GetBuffer())
};
result.Content.Headers.ContentDisposition =
new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
FileName = "CertificationCard.pdf"
};
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}