1

在我的应用程序中,我有几个网格,每个网格都从一个ApiController动作中获取它们的数据源。我想为用户添加一个选项,将这些网格导出为 CSV、PDF、Excel 等。编写代码以将数据源转换为预期格式不是问题。问题是我想编写可重用的代码。目前我对每个网格都有一个单独的操作。

我可以很容易地添加一个新的导出控制器,其中包含调用相同逻辑的匹配操作ApiController,但这意味着如果我有五个ApiController操作,我将需要五个额外Controller的操作。

我想知道是否有一种方法可以进行单个导出Controller操作,但以某种方式将详细信息传递ApiController给它。

有什么建议么?

4

1 回答 1

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;
}
于 2016-08-04T19:27:42.940 回答