0

私のアプリケーションは MVC3 (ASPX ビュー) です。Editビューには、フォームを保存してインデックスページに戻る保存ボタンと、Editと同じコントローラーの別のActionResultからPDFを印刷する別のボタンがあります。1 つのボタンから PDF を保存して印刷する方法はありますか? 編集ビューのスクリプトは次のとおりです。

 public ActionResult EditCTAH(long learnerID = 0, long caseListID = 0)
    {

        ViewBag.caseListID = (long)Session["_CTA_CaseListId"];
        try
        {
            CTAHFormEdit ctform = _learnerscaseListsSvc.GetCTAHForm(learnerID, caseListID);
            return View(ctform);
        }
        catch
        {
            return null;
        }
    }

    [HttpPost]
    public ActionResult EditCATH(CTAHFormEdit ctform)
    {
        if (ModelState.IsValid)
        {
            _learnerscaseListsSvc.EditCTAHForm(ctform);
            long courseId = (long)Session["_CTA_CourseId"];
            long caseId = (long)Session["_CTA_CaseId"];
            long caselistId = (long)Session["_CTA_CaseListId"];
            return RedirectToAction("Index", new { courseId = courseId, caseId = caseId, caselistId = caselistId });
        }

        return View(ctform);
    }

PDFを印刷するためのスクリプトは次のとおりです。

   public ActionResult EvaluationCATH_PDF(long learnerID = 0, long caseListID = 0)
        {
            try
            {
.....
    pdfStamper.Close();
                byte[] byteInfo = workStream.ToArray();
                SendPdfToBrowser(byteInfo, cth.Learner_ID, cth.StudyCase_ID);
                return null;
            }
            catch
            {
                return null;
            }
        }

前もって感謝します。

4

1 に答える 1

1

編集アクションの保存時に PDF を取得する場合は、PDF をブラウザーに返すアクション メソッドにリダイレクトできます。

[HttpPost]
public ActionResult EditCATH(CTAHFormEdit ctform)
{
    if (ModelState.IsValid)
    {
     //Saved succesfully, lets show the pdf in browser.
      return RedirectToAction("Print",new { id=someIdValue});
    }
    return View(ctform);
}
public ActionResult Print(string id)
{
   byte[] pdfByteArray=GetByteArrayFromPassedID(id);
   return File(pdfByteArray,"application/pdf","somefriendlyname.pdf");
}
于 2012-09-18T19:57:47.563 に答える