This may not be exactly what you want but might meet your need. You can embed the PDF in a partial view then update the partial view via ajax with the PDF on the form submit button.
Example code: Partial view
@model Test.Models.ViewModel <style type="text/css"> #pdfbox { width:600px; height:400px; border: 5px solid #ccc; } </style> <object id='pdfbox' type="application/pdf" data="@Url.Action("GeneratePDF", "Home", Model)"> Click @Html.ActionLink("here", "GeneratePDF", "Home") to view the file. </object>
Controller call:
public ActionResult GeneratePDF(ViewModel model) { byte[] bytes = OpenPDFAndGetBytes("Thepdfname"); return File(bytes, "application/pdf"); } public ActionResult RenderPDF(LabelViewModel model) { return PartialView(model); }
main view:
@using (Ajax.BeginForm("RenderPDF", "Home", new AjaxOptions { UpdateTargetId = "pdf" })) { <table> <tr> <td> <fieldset> <legend>Fill the form:</legend> Some form junk can go here <br /> <input type="submit" value="Display PDF" /> </fieldset> </td> <td> <div id='pdf'> @{ Html.RenderPartial("RenderPDF", Model); } </div> </td> </tr> </table> }
(Edit: Changed "main view" to a title ish)