【问题标题】:ASP.Net MVC: Exporting the results of an ApiController actionASP.Net MVC:导出 ApiController 操作的结果
【发布时间】:2013-01-08 12:36:28
【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

  • 我认为您应该在请求中指定 Accept 标头。根据标头中指定的内容类型,将使用服务器上的适当转换器。
  • @Dimi 我认为您应该将另一个问题标记为重复问题。这个问题是一年多以前提出的。

标签: c# asp.net json asp.net-mvc-4


【解决方案1】:

这是我发现的:

我可以让它与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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2018-11-27
    • 2014-03-23
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多