0

你好聪明的编码人员,我正在为大学做一个 MVC 项目,我正在尝试输出发票,我不需要查看发票,只需创建一个可下载的文本文件。我一直在尝试使用 StringBuilder 从 ViewBag 获取详细信息,但它们没有被写入文件。我正在使用 @HtmlActionLink 从视图中创建它。我确信我在做一些愚蠢的事情,任何建议将不胜感激。太感谢了。

我的控制器中的方法:

public FileStreamResult Invoice()
    {
        StringBuilder sb = new StringBuilder("Your Invoice");

        sb.AppendLine(" ");
        sb.AppendLine("Id:"+ @ViewBag.ClientId);
        sb.AppendLine("Name:" + @ViewBag.Name);
        sb.AppendLine("Total:" + @ViewBag.Total);

        var invoiceDetails = sb.ToString();

        var byteArray = Encoding.ASCII.GetBytes(invoiceDetails);
        var stream = new MemoryStream(byteArray);


        return File(stream, "text/plain", "Invoice.txt");

    }
4

1 回答 1

0

您可以将参数、调用的 ID 传递到下载调用的操作中。

下载带有 ID 参数的发票的操作链接:

@Html.ActionLink("Download invoice", "Invoice", "MyController", new { id = @Model.InvoiceId }) 

@Model.InvoiceId来自显示发票的视图模型。

控制器动作:

public FileStreamResult Invoice(int id)
{
    ...
}
于 2020-05-02T17:15:07.380 回答