ASP.Net MVC:导出 ApiController 操作的结果

本文关键字:操作 结果 ApiController 导出 Net MVC ASP | 更新日期: 2023-09-27 17:55:39

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

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

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

有什么建议吗?

ASP.Net MVC:导出 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;
}