我正在编写我的第一个 ASP.NET MVC 4 应用程序,并且正在努力弄清楚我所做的是否是一种好方法、过度杀伤或只是愚蠢。
我知道有一百万种方法可以做事,但只是在寻找一些最佳实践指导。
基本上,我的索引视图呈现一个简单的表单,在 POST 上我正在创建一个 PDF,将其存储在会话和 ViewBag 中,并将其传递给 Confirm 操作。所有 Confirm 操作都用于显示视图 (Confirm.cshtml)。
有人可以在这里指导我吗?
控制器
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(FormCollection formCollection)
{
// Create PDF
var doc = new Document();
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
doc.Open();
doc.Add(new Paragraph("First Paragraph"));
doc.Add(new Paragraph("Second Paragraph"));
doc.Close();
byte[] docData = memoryStream.GetBuffer(); // get the generated PDF as raw data
// create id and store data in Session
var id = Guid.NewGuid().ToString();
Session[id] = docData;
// store the id in ViewBag
ViewBag.id = id;
return View("Confirm");
}
// Handles the /Home/Confirm view
public ActionResult Confirm()
{
return View();
}
public ActionResult Download(string id)
{
var docData = (byte[]) Session[id];
if (docData == null) {
return HttpNotFound();
}
Session[id] = null;
return File(docData, "application/pdf", "test.pdf");
}
}
看法
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Confirm</title>
</head>
<body>
<div>
<a href="/Home/Download?id=@ViewBag.id">Download PDF</a>
</div>
</body>
</html>