2017-04-11 3 views
0

各パートナーのARのpdfコピーを生成する必要があり、そのためにモデルをTempData経由で別のビューに渡そうとしていますが、常にnullを返します。モデルをActionAsPdfに渡すことができないようです

以下は私のコードです。

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に達すると、tempdataは常にnullになります。 AccountsReceivableReport()でSPを呼び出すことはできますが、時間がかかることがあります。

tempsataをActionAsPdfに渡す際に問題がありますか? 私はrotativa btwを使用しています。私はブレークポイントを挿入

、TempDataを[「mymodelという」]は成功した結果で満たされているが、私は AccountsReceivableReport_PerPartner()するための方法に到達したとき、それは今nullです。

私はViewAsPdfするActionAsPdfからそれを変更しようとした場合、それはbuildPdf部にエラーを返し

答えて

0

ASP.NET MVCでTempDataを、基本的に TempDataDictionaryから派生した辞書オブジェクトです。 TempDataは、 という次のHTTPリクエストに対して、現在のリクエストである の場合にのみ残る他のオプション(ViewBagおよびViewData)とは異なります。このためdetail

てみセッション:でも

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

私はセッションにそれを切り替え、それはまだヌル –

+0

セッション[ "mymodelという"] =レポートです。これもセット? –

+0

ええ、私もその部分を変更しました。 –

関連する問題