簡體   English   中英

似乎無法將模型傳遞給ActionAsPdf

[英]Can't seem to pass a model to an ActionAsPdf

我需要為每個合作伙伴的AR生成一個pdf副本,為此,我試圖通過TempData將模型傳遞給另一個視圖,但是它始終返回null。

這是我的下面的代碼。

public ActionResult GenerateARPDFs(string dateasof)
{
    dateasof = "03-31-17";
    var report = new ReportViewModel();
    report.AccountsReceivable = _bhelper.GetAccountsReceivable("", "", "", DateTime.Parse(dateasof)).
                                Where(w => !w.SOANum.Any(y => char.IsLetter(y)) ||
                                w.SOANum.Contains("SOA")).ToList<AccountsReceivable>();

    foreach (var partner in report.AccountsReceivable.Select(m => m.BP).Distinct())
    {
        TempData["MyModel"] = report;
        var actionResult = new ActionAsPdf("AccountsReceivableReport_PerPartner", new { employeecode = partner })
        {   
            PageSize = Rotativa.Options.Size.Letter,
            PageOrientation = Rotativa.Options.Orientation.Landscape,
            PageMargins = new Rotativa.Options.Margins(5, 5, 5, 5),
            MinimumFontSize = 12
        };
        var byteArray = actionResult.BuildPdf(ControllerContext);
        var fullPath = ConfigurationManager.AppSettings["ArPDF"].ToString() + @"\" + partner + ".pdf";
        var fileStream = new FileStream(fullPath, FileMode.CreateNew, FileAccess.ReadWrite);
        fileStream.Write(byteArray, 0, byteArray.Length);
        fileStream.Close();
    }
    TempData["SuccessMessage"] = "Generation successful!";
    return View();
}



public ActionResult AccountsReceivableReport_PerPartner(string employeecode)
{
    var report = (ReportViewModel)TempData["MyModel"];
    report.AccountsReceivable = filter by partner here////....;
    return View(report);
}

但是,當到達AccountsReceivableReport時,臨時數據始終為null。 我可以回想起AccountsReceivableReport()上的SP,但這會花費更長的時間。

將臨時數據傳遞給ActionAsPdf是否存在問題? 我正在使用rotativa btw。

當我插入一個斷點時,TempData [“ MyModel”]被成功地填充了結果,但是當我到達AccountsReceivableReport_PerPartner()的方法時,它現在為null。

如果我嘗試將其從ActionAsPdf更改為ViewAsPdf,則會在buildPdf部分返回錯誤

ASP.NET MVC中的TempData基本上是從TempDataDictionary派生的字典對象。 TempData保留用於后續的HTTP請求,而其他選項(ViewBag和ViewData)則僅針對當前請求保留。 詳情

為此嘗試會議:

public ActionResult AccountsReceivableReport_PerPartner(string employeecode)
{
    var report = Session["MyModel"] as ReportViewModel;
    return View(report);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM