【发布时间】:2020-05-02 16:04:06
【问题描述】:
你好聪明的编码人员, 我正在为大学做一个 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");
}
【问题讨论】:
-
嗨,Esther,您是否尝试从您的网页中发布 ClientId、Name 和 Total?或者如果不是,这些是从哪里来的?
-
它们来自天蓝色数据库
-
在这种情况下,ViewBag 不是在后端传输数据的最佳方式。您需要考虑创建一个模型来表示数据(类),然后在您的操作中使用这些模型。我会尽快发布答案
-
哎呀!抱歉,我可能也应该发布我的模型类。我应该发布指向我的 GitHub 存储库的链接吗?
-
是的,去吧。应该更容易看到。
标签: c# model-view-controller stringbuilder filestreamresult