在我的应用程序中,我有一些网格,每个网格都从ApiController
操作中获取数据源。我想为用户添加一个选项,将这些网格导出为CSV,PDF,Excel等。编写代码将数据源转换为预期的格式不是问题。问题是我想编写可重用的代码。目前,我对每个网格都有一个单独的操作。
我可以非常轻松地添加一个新的导出控制器,其中的匹配操作调用与ApiController
相同的逻辑,但这意味着如果我有五个ApiController
操作,我将需要另外五个{{1}行动。
我想知道是否有一种方法可以进行单一导出Controller
操作,但不知何故将Controller
的详细信息传递给它。
有什么建议吗?
答案 0 :(得分:0)
这是我发现的:
我可以将其与StreamContent
一起使用,而不是将ByteArrayContent
作为内容返回。
[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;
}