在MVC中创建和返回PDF的工作流程

时间:2012-10-24 15:14:31

标签: asp.net-mvc pdf itextsharp

我正在使用microsoft的MVC平台来创建一个Web应用程序。在此应用程序中,用户将填写HTML表单,单击“提交”,重定向到成功的消息页面,并以pdf格式接收表单的打印输出。另外,我还想将表单中的条目保存在数据库中。我正在使用iTextSharp来创建和编辑PDF。

我正在寻找有关管理MVC工作流程的建议。具体来说,我有一个控制器方法,可以指导工作流程:

  1. 将表单条目保存到数据库
  2. 创建和编辑PDF,
  3. 将用户引导至成功页面,
  4. 返回PDF供用户下载。
  5. 我的主要问题是:我应该如何委派重定向到成功页面并返回pdf的任务?截至目前,我的控制器似乎只能返回一个或另一个。我可以重定向到“附带”PDF的视图吗?

1 个答案:

答案 0 :(得分:0)

我在这种情况下所做的是创建一个控制器动作,该动作返回与数据库中给定条目id相关联的PDF。

public FileResult DownloadPdf(int id)
{
    byte[] data;
    // ... Generate PDF
    return File(data, "application/pdf");
}

然后处理表单POST的控制器操作执行以下操作:

  1. 将条目值保存到数据库。
  2. 检索已保存表单条目集的主键。
  3. 重定向到成功视图并将主键传递给它。
  4. 然后,成功视图可以使用已经指定的ID链接到PDF(作为下载链接),或者可以将其嵌入到iframe中(哎呀!)。

    请注意,这仅适用,因为您要将值保存在数据库中。如果不使用数据库,则必须:

    1. 对查询字符串(大小有限)中的所有表单数据进行编码
    2. 将表单数据存储在会话中(不推荐使用)
    3. 希望有所帮助。